Parfois, l'installation de certaines applications démarre un processus ou un service à partir de l'application exécutée automatiquement lors de l'installation. Comment puis-je les installer sans les démarrer ?
Meilleure réponse
Il existe un moyen légèrement hackish, mais assez fiable, que j'utilise depuis un certain temps dans un script d'installation automatisé.
Créez d'abord un répertoire, par exemple /root/fake
, qui contient des liens symboliques vers /bin/true
appelé :
initctl
invoke-rc.d
restart
start
stop
start-stop-daemon
service
deb-systemd-helper
Vous pouvez également en faire des scripts bash qui ne font rien et renvoient le succès.
Ensuite, incluez ce répertoire devant $PATH
lors de l'installation des packages :
PATH=/root/fake:$PATH apt-get install whatever
Cela empêche uniquement les démons de démarrer/redémarrer, tandis que des choses comme la création d'un initramfs sont toujours en cours.
Explication
Les scripts qui sont exécutés lors de l'installation et de la suppression du paquet exécutent invoke-rc.d
ou d'autres des commandes mentionnées pour démarrer et arrêter les services. Cependant, ils ne les appellent pas avec des chemins absolus (du moins, je n'en ai pas rencontré un qui le fasse).
Donc, en insérant les fausses commandes "pas d'opération" au début de $PATH
, les vraies commandes ne sont jamais appelées.
Étant donné que seules les commandes utilisées pour démarrer/arrêter les services sont truquées, tout le reste, en particulier les tâches importantes comme la mise à jour/création d'images initramfs, fonctionne toujours.