Manchmal wird bei der Installation einiger Anwendungen ein Prozess oder Dienst von der Anwendung gestartet, die automatisch bei der Installation ausgeführt wird. Wie installiere ich, ohne sie zu starten?
Beste Antwort
Es gibt eine leicht hackige, aber ziemlich zuverlässige Methode, die ich seit einiger Zeit in einem automatisierten Installationsskript verwende.
Erstellen Sie zunächst ein Verzeichnis, zum Beispiel /root/fake
, die symbolische Links zu /bin/true
enthält aufgerufen:
initctl
invoke-rc.d
restart
start
stop
start-stop-daemon
service
deb-systemd-helper
Sie könnten sie auch zu Bash-Skripten machen, die nichts tun und Erfolg zurückgeben.
Fügen Sie dann dieses Verzeichnis am Anfang von $PATH
ein beim Installieren von Paketen:
PATH=/root/fake:$PATH apt-get install whatever
Dies verhindert nur, dass Daemons gestartet/neu gestartet werden, während Dinge wie das Erstellen eines initramfs noch erledigt werden.
Erklärung
Die Skripte, die bei der Paketinstallation und -entfernung ausgeführt werden, führen invoke-rc.d
aus oder andere der erwähnten Befehle zum Starten und Stoppen von Diensten. Sie nennen sie jedoch nicht mit absoluten Pfaden (zumindest ist mir noch keiner begegnet, der das tut).
Also durch Einfügen der gefälschten „no operation“-Befehle am Anfang von $PATH
, die echten Befehle werden nie aufgerufen.
Da nur die Befehle zum Starten/Stoppen von Diensten gefälscht werden, funktioniert alles andere, insbesondere wichtige Aufgaben wie das Aktualisieren/Erstellen von Initramfs-Images, noch.