C'è un modo leggermente hacker, ma abbastanza affidabile per farlo, che sto usando da un po 'in uno script di installazione automatizzata.
Innanzitutto creare una directory, ad esempio /root/fake
, che contenga collegamenti simbolici /bin/true
chiamati:
initctl
invoke-rc.d
restart
start
stop
start-stop-daemon
service
deb-systemd-helper
Potresti anche farli scrivere script che non fanno nulla e restituiscono successo.
Quindi includere quella directory all'inizio di $PATH
quando si installano i pacchetti:
PATH=/root/fake:$PATH apt-get install whatever
Ciò impedisce solo l'avvio / il riavvio dei demoni, mentre sono ancora in corso operazioni come la creazione di un initramfs.
Spiegazione
Gli script che vengono eseguiti durante l'installazione e la rimozione del pacchetto vengono eseguiti invoke-rc.d
o altri comandi citati per avviare e arrestare i servizi. Tuttavia non li chiamano con percorsi assoluti (almeno non ne ho incontrato uno che lo faccia).
Quindi, inserendo i comandi falsi "nessuna operazione" all'inizio di $PATH
, i comandi reali non vengono mai chiamati.
Poiché solo i comandi utilizzati per avviare / arrestare i servizi vengono falsificati, tutto il resto, in particolare le attività importanti come l'aggiornamento / la creazione di immagini initramfs, continuano a funzionare.