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.