Ho creato un pacchetto deb che installa un servizio.
Sui nostri dispositivi embedded, voglio che questo pacchetto abiliti automaticamente il servizio. Sulle nostre workstation per sviluppatori, voglio che gli sviluppatori systemctl start foo
manualmente (è un servizio pesante e quindi consuma solo risorse se viene eseguito tutto il tempo in un ambiente desktop).
Come posso richiedere all'utente la sua decisione durante apt-get
fare un passo? È la soluzione migliore?
Nota, ho creato il pacchetto usando dh_make
e debhelper
e abilitato con:
%:
dh [email protected] --with=systemd
override_dh_systemd_enable:
dh_systemd_enable --name=foo foo.service
Risposta accettata:
Puoi utilizzare le preimpostazioni di sistema per determinare se un servizio di sistema verrà abilitato o disabilitato per impostazione predefinita al momento dell'installazione.
I predefiniti Debian abilitano tutti i servizi man mano che vengono installati, quindi devi solo inviare un predefinito alle workstation di sviluppo (il comportamento predefinito corrisponde a quello che vuoi che accada in produzione), inviando un file come /etc/systemd/system-preset/80-foo.preset
contenente una riga che dice
disable foo.service
Se gestisci le tue workstation per sviluppatori utilizzando un sistema come Puppet, Chef, Ansible, ecc., puoi usarle per spedire una tale configurazione preimpostata di sistema, che dovrebbe semplificarti l'applicazione della policy solo alle workstation per sviluppatori e non alla produzione macchine.
Il tuo pacchetto .deb dovrebbe usare il systemctl preset
comando per abilitare il servizio, poiché quel comando rispetterà la configurazione preimpostata.
Come sottolineano @JdeBP e @sourcejedi, le macro Debian in deb-helpers (come dh_systemd_enable
) lo fanno già, invocano deb-systemd-helper
che utilizzerà systemctl preset
per impostazione predefinita (con un piccolo avvertimento che se rimuovi (ma non elimini) il pacchetto e successivamente lo reinstalli, il servizio non verrà abilitato, anche se rimuovi il file preimpostato.) Vedi questo commento in deb-systemd-helper
's enable
operazione:
# 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.
Per maggiori informazioni sulla funzionalità systemd dei preset, vedere la pagina man dei preset systemd e del comando systemctl preset
che lo implementa.