A veces, la instalación de algunas aplicaciones iniciará un proceso o servicio desde la aplicación que se ejecuta automáticamente en la instalación. ¿Cómo los instalo sin iniciarlos?
Mejor respuesta
Hay una forma un poco hackish, pero bastante confiable, de hacer esto que he estado usando durante un tiempo en un script de instalación automatizado.
Primero cree un directorio, por ejemplo /root/fake
, que contiene enlaces simbólicos a /bin/true
llamado:
initctl
invoke-rc.d
restart
start
stop
start-stop-daemon
service
deb-systemd-helper
También puede hacer que bash scripts que no hagan nada y devuelvan el éxito.
Luego incluya ese directorio al principio de $PATH
al instalar paquetes:
PATH=/root/fake:$PATH apt-get install whatever
Esto solo evita que los demonios se inicien/reinicien, mientras que todavía se están realizando cosas como la creación de un initramfs.
Explicación
Los scripts que se ejecutan en la instalación y eliminación del paquete 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 lo haga).
Entonces, al insertar los comandos falsos de "sin operación" al comienzo de $PATH
, los comandos reales nunca se ejecutan.
Dado que solo se falsifican los comandos utilizados para iniciar/detener los servicios, todo lo demás, en particular las tareas importantes como actualizar/crear imágenes initramfs, sigue funcionando.