Ich habe ein Deb-Paket erstellt, das einen Dienst installiert.
Auf unseren eingebetteten Geräten möchte ich, dass dieses Paket den Dienst automatisch aktiviert. Auf unseren Entwickler-Workstations möchte ich, dass die Entwickler systemctl start foo
manuell (es ist ein starker Dienst und verbraucht daher nur Ressourcen, wenn er die ganze Zeit in einer Desktop-Umgebung ausgeführt wird).
Wie kann ich den Benutzer während des apt-get
zu seiner Entscheidung auffordern? Schritt? Ist das die beste Lösung?
Beachten Sie, dass ich das Paket mit dh_make
erstellt habe und debhelper
und aktiviert es mit:
%:
dh [email protected] --with=systemd
override_dh_systemd_enable:
dh_systemd_enable --name=foo foo.service
Akzeptierte Antwort:
Sie können Systemd-Voreinstellungen verwenden, um zu beeinflussen, ob ein Systemd-Dienst zum Zeitpunkt der Installation standardmäßig aktiviert oder deaktiviert wird.
Die Debian-Voreinstellungen aktivieren standardmäßig alle Dienste, wenn sie installiert werden, sodass Sie nur eine Voreinstellung an die Entwicklungsarbeitsstationen senden müssen (das Standardverhalten entspricht dem, was in der Produktion passieren soll), indem Sie eine Datei wie /etc/systemd/system-preset/80-foo.preset
mit einer Zeile, die besagt
disable foo.service
Wenn Sie Ihre Entwickler-Workstations mit einem System wie Puppet, Chef, Ansible usw. verwalten, können Sie sie verwenden, um eine solche voreingestellte Systemkonfiguration zu liefern, die es Ihnen erleichtern sollte, die Richtlinie nur auf Entwickler-Workstations und nicht auf die Produktion anzuwenden Maschinen.
Ihr .deb-Paket sollte die systemctl preset
verwenden Befehl, um den Dienst zu aktivieren, da dieser Befehl die voreingestellte Konfiguration respektiert.
Wie @JdeBP und @sourcejedi betonen, sind die Debian-Makros in Deb-Helpern (wie dh_systemd_enable
) tun dies bereits, sie rufen deb-systemd-helper
auf was systemctl preset
verwendet standardmäßig (mit einer kleinen Einschränkung, dass, wenn Sie das Paket entfernen (aber nicht bereinigen) und es später erneut installieren, der Dienst nicht aktiviert wird, selbst wenn Sie die voreingestellte Datei entfernen.) Siehe diesen Kommentar in deb-systemd-helper
’s enable
Betrieb:
# 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.
Weitere Informationen zum systemd-Feature von Presets finden Sie auf der Manpage von systemd-Presets und des Befehls systemctl preset
die es implementiert.