Hay una forma un poco hackear, pero bastante confiable de hacer esto que he estado usando durante un tiempo en un script de instalación automatizada.
Primero cree un directorio, por ejemplo /root/fake
, que contenga enlaces simbólicos a los /bin/true
llamados:
initctl
invoke-rc.d
restart
start
stop
start-stop-daemon
service
deb-systemd-helper
También puede hacer que los scripts de bash no hagan nada y devuelvan el éxito.
Luego incluya ese directorio al frente de $PATH
cuando instale paquetes:
PATH=/root/fake:$PATH apt-get install whatever
Esto solo evita que los demonios se inicien / reinicien, mientras que cosas como crear un initramfs todavía se están haciendo.
Explicación
Los scripts que se ejecutan en la instalación y eliminación de paquetes se ejecutan invoke-rc.d
u otros de los comandos mencionados para iniciar y detener servicios. Sin embargo, no los llaman con rutas absolutas (al menos no he encontrado uno que sí lo haga).
Entonces, al insertar los comandos falsos de "no operación" al principio de $PATH
, nunca se llama a los comandos reales.
Dado que solo los comandos utilizados para iniciar / detener servicios están siendo falsificados, todo lo demás, en particular tareas importantes como actualizar / crear initramfs-images todavía funcionan.