GNU/Linux >> LINUX-Kenntnisse >  >> Debian

Bedingtes Aktivieren von Systemd-Dateien durch Debian-Paketierung?

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.

Siehe auch:Debian – DNS in Debian Linux nicht richtig eingerichtet?
Debian
  1. Grundlegende Systemd-Dienstdateien schreiben?

  2. Debian – Dienst aktiv, aber (beendet)?

  3. Debian – Richtiger Weg zur Verwendung von Onfailure in Systemd?

  4. Debian-Sicherheit /etc-Berechtigungen?

  5. Debian – Systemd:Dem Dienst fehlen sowohl die Execstart=- als auch die Execstop=-Einstellung. Ablehnen?

So finden Sie Dateien in Debian 10

So manipulieren Sie Dateien unter Debian 11

5 Möglichkeiten, Speicherplatz unter Debian 10 freizugeben

Wie man Protokolldateien in Debian 10 ansieht oder überwacht

So installieren Sie Icinga 2 auf Debian 8

So finden Sie Dateien in Debian