GNU/Linux >> Znalost Linux >  >> Debian

Podmíněné povolení souborů Systemd prostřednictvím balíčku Debian?

Vytvořil jsem deb balíček, který nainstaluje službu.

Na našich vestavěných zařízeních chci, aby tento balíček službu automaticky aktivoval. Na našich vývojářských pracovních stanicích chci, aby vývojáři systemctl start foo ručně (je to těžká služba, a tak pouze spotřebovává zdroje, pokud je neustále spuštěna na desktopovém prostředí).

Jak mohu během apt-get vyzvat uživatele k rozhodnutí krok? Je to nejlepší řešení?

Poznámka:Balíček jsem vytvořil pomocí dh_make a debhelper a aktivoval ji pomocí:

%:
    dh [email protected] --with=systemd

override_dh_systemd_enable:
    dh_systemd_enable --name=foo foo.service

Přijatá odpověď:

Pomocí předvoleb systemd můžete ovlivnit, zda bude služba systemd ve výchozím nastavení při instalaci povolena nebo zakázána.

Výchozí nastavení Debianu povoluje všechny služby, jakmile jsou nainstalovány, takže na vývojové pracovní stanice stačí poslat předvolbu (výchozí chování odpovídá tomu, co chcete, aby se stalo v produkci), odesláním souboru jako /etc/systemd/system-preset/80-foo.preset obsahující řádek, který říká

disable foo.service

Pokud své vývojářské pracovní stanice spravujete pomocí systému, jako je Puppet, Chef, Ansible atd., můžete je použít k dodání takové systémové přednastavené konfigurace, která by vám měla usnadnit aplikaci zásad pouze na vývojářské pracovní stanice, nikoli na produkci. stroje.

Váš balíček .deb by měl používat systemctl preset příkaz k povolení služby, protože tento příkaz bude respektovat přednastavenou konfiguraci.

Jak upozorňují @JdeBP a @sourcejedi, makra Debianu v deb-helper (jako je dh_systemd_enable ) to již udělají, vyvolají deb-systemd-helper který bude používat systemctl preset ve výchozím nastavení (s malým upozorněním, že pokud balíček odeberete (ale nevyčistíte) a později jej znovu nainstalujete, službu nepovolí, i když odstraníte přednastavený soubor.) Viz tento komentář v deb-systemd-helper 's enable operace:

    # 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.

Další informace o funkci systemd presetů najdete v manuálové stránce systemd presetů a příkazu systemctl preset která jej implementuje.

Související:Debian – DNS není správně nastaven v Debian Linuxu?
Debian
  1. Současně rozbalte nebo rozbalte více souborů v Debianu 10

  2. Debian Security /etc Oprávnění?

  3. Jak nainstalovat Suricata na Debian 11

  1. Psaní základních souborů Systemd Service?

  2. Debian – služba je aktivní, ale (ukončena)?

  3. Jak zastavit službu systemd

  1. Debian – nejste si jisti, co spouští tento soubor Systemd Unit?

  2. Debian – správný způsob použití Onfailure v Systemd?

  3. Debian – Systemd:Služba postrádá nastavení Execstart=i Execstop=. Odmítnout?