Subject: ‘guix system reconfigure’closes SSH connections
From: Ludovic Courtès <[email-masked]>
To: [email-masked]
Date: Sat, 09 Apr 2022 14:05:15 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

With OpenSSH turned into inetd style in commit
808b9e850491c7b1d867a5f1f4d5ee6f61f345d4, the service upgrade code used
by ‘guix system reconfigure’ and ‘guix deploy’ wrongfully decides that
the ‘sshd-*’ transient services corresponding to individual SSH
connections should be closed:

--8<---------------cut here---------------start------------->8---
$ sudo guix system reconfigure …
[…]
guix system: chargeur d'amorçage correctement installé sur « (/dev/sda) »
0,0 Mo seront téléchargés
 module-import-compiled  20KiB                                                                                                                       1.2MiB/s 00:00 [##################] 100.0%
The following derivation will be built:
  /gnu/store/n99ahnnw94cay1drg499kxsg5ma6598p-upgrade-shepherd-services.scm.drv

0,0 Mo seront téléchargés
 module-import-compiled  20KiB                                                                                                                       1.8MiB/s 00:00 [##################] 100.0%
construction de /gnu/store/n99ahnnw94cay1drg499kxsg5ma6598p-upgrade-shepherd-services.scm.drv...
shepherd: Removing service 'sshd-1'...
shepherd: Service sshd-1 has been stopped.
shepherd: Transient service sshd-1 unregistered.
shepherd: Done.
shepherd: Removing service 'sshd-3'...
shepherd: Service sshd-3 has been stopped.
shepherd: Transient service sshd-3 unregistered.
shepherd: Done.
shepherd: Service swap-swap could not be started.
shepherd: Service host-name has been started.
shepherd: Service user-homes has been started.
shepherd: Service sysctl has been started.
shepherd: Service host-name has been started.
shepherd: Service term-console could not be started.
shepherd: Service bluetooth has been started.
Pour compléter la mise à jour, lancez « herd restart SERVICE » pour arrêter,
mettre à jour et redémarrer tous les services qui n'ont pas été redémarrés
automatiquement.
Lancez « herd status » pour visualiser la liste des services de votre système.
--8<---------------cut here---------------end--------------->8---

I think the solution is to leave transient services untouched.

Unfortunately, the status sexp returned by ‘services->sexp’ currently
lacks information about whether a service is transient.

Ludo’.