A volte l'installazione di alcune applicazioni avvierà un processo o un servizio dall'applicazione eseguita automaticamente al momento dell'installazione. Come installo senza avviarli?
Migliore risposta
C'è un modo leggermente hacker, ma abbastanza affidabile per farlo, che uso da un po' di tempo in uno script di installazione automatizzata.
Per prima cosa crea una directory, ad esempio /root/fake
, che contiene collegamenti simbolici a /bin/true
chiamato:
initctl
invoke-rc.d
restart
start
stop
start-stop-daemon
service
deb-systemd-helper
Potresti anche fare in modo che bash script che non fanno nulla e restituiscano il successo.
Quindi includi quella directory all'inizio di $PATH
durante l'installazione dei pacchetti:
PATH=/root/fake:$PATH apt-get install whatever
Questo impedisce solo l'avvio/riavvio dei demoni, mentre cose come la creazione di un initramfs sono ancora in corso.
Spiegazione
Gli script che vengono eseguiti durante l'installazione e la rimozione del pacchetto eseguono invoke-rc.d
o altri dei comandi citati per avviare e interrompere i servizi. Tuttavia non li chiamano con percorsi assoluti (almeno non ne ho incontrato uno che lo faccia).
Quindi inserendo i falsi comandi "nessuna operazione" all'inizio di $PATH
, i veri comandi non vengono mai chiamati.
Poiché solo i comandi utilizzati per avviare/arrestare i servizi vengono falsificati, tutto il resto, in particolare attività importanti come l'aggiornamento/creazione di immagini initramfs, funziona ancora.