GNU/Linux >> Linux Esercitazione >  >> Debian

Abilitazione condizionata dei file Systemd tramite Debian Packaging?

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.

Correlati:Debian – Il DNS non è impostato correttamente in Debian Linux?
Debian
  1. Scrivere file di servizio Systemd di base?

  2. Debian – Servizio attivo ma (chiuso)?

  3. Debian:modo corretto di utilizzare Onfailure in Systemd?

  4. Debian – Systemd:il servizio manca sia dell'impostazione Execstart=che di Execstop=. Rifiutare?

  5. Come installare Suricata su Debian 11

Come trovare file in Debian 10

Come manipolare file su Debian 11

5 modi per liberare spazio su disco su Debian 10

Come guardare o monitorare i file di registro in Debian 10

Come installare Icinga 2 su Debian 8

Come trovare file in Debian