J'ai créé un paquet deb qui installe un service.
Sur nos appareils intégrés, je souhaite que ce package active automatiquement le service. Sur nos postes de travail de développeur, je veux que les développeurs systemctl start foo
manuellement (il s'agit d'un service lourd, et donc il consomme simplement des ressources s'il est exécuté tout le temps sur un environnement de bureau).
Comment puis-je inviter l'utilisateur à prendre sa décision pendant le apt-get
étape? Est-ce la meilleure solution ?
Remarque, j'ai créé le package en utilisant dh_make
et debhelper
et activé avec :
%:
dh [email protected] --with=systemd
override_dh_systemd_enable:
dh_systemd_enable --name=foo foo.service
Réponse acceptée :
Vous pouvez utiliser les préréglages systemd pour déterminer si un service systemd sera activé ou désactivé par défaut au moment de l'installation.
Les préréglages Debian activent par défaut tous les services lorsqu'ils sont installés, vous n'avez donc qu'à envoyer un préréglage aux stations de travail de développement (le comportement par défaut correspond à ce que vous voulez qu'il se passe en production), en envoyant un fichier tel que /etc/systemd/system-preset/80-foo.preset
contenant une ligne qui dit
disable foo.service
Si vous gérez vos postes de travail de développeur à l'aide d'un système tel que Puppet, Chef, Ansible, etc., vous pouvez les utiliser pour fournir une telle configuration prédéfinie systemd, ce qui devrait vous permettre d'appliquer facilement la politique aux postes de travail de développeur uniquement et non à la production. machines.
Votre package .deb doit utiliser le systemctl preset
commande pour activer le service, car cette commande respectera la configuration prédéfinie.
Comme le soulignent @JdeBP et @sourcejedi, les macros Debian dans deb-helpers (telles que dh_systemd_enable
) le font déjà, ils invoquent deb-systemd-helper
qui utilisera systemctl preset
par défaut (avec une petite mise en garde que si vous supprimez (mais ne purgez pas) le paquet, et que vous le réinstallez plus tard, il n'activera alors pas le service, même si vous supprimez le fichier prédéfini.) Voir ce commentaire dans deb-systemd-helper
est enable
opération :
# We use 'systemctl preset' on the initial installation only. # On upgrade, we manually add the missing symlinks only if the # service already has some links installed. Using 'systemctl # preset' allows administrators and downstreams to alter the # enable policy using systemd-native tools.
Pour plus d'informations sur la fonctionnalité systemd des préréglages, consultez la page de manuel des préréglages systemd et de la commande systemctl preset
qui l'implémente.