Ich wurde gerade von diesem Projekt inspiriert:
Also, ich wollte etwas Ähnliches machen, nachdem dpkg etwas Neues im Verzeichnis /usr/share/applications abgelegt hat, aber wohin sollte mein Skript zeigen und welche Parameter sollten übergeben werden?
Antwort1
Wenn das Skript keine Parameter annimmt, fügen Sie /etc/apt/apt.conf.d/
beispielsweise eine Datei in hinzu 92local
(Zahlen werden verwendet, um die Ausführungsreihenfolge der Skripte in diesem Verzeichnis zu erzwingen) mit folgendem Inhalt:
DPkg::Post-Invoke { "/path-to/my-script"; };
und denken Sie daran, es ausführbar zu machen.
Ich kann derzeit keine Informationen dazu finden, wie Parameter oder Eingaben an das Skript übergeben werden.
Wenn es hilfreich sein kann, apt
sollten Sie bei der Ausführung auf der Befehlszeile die Befehlszeile in der Umgebungsvariable finden SUDO_COMMAND
.
Antwort2
Ich habe einen Weg gefunden, die Befehlszeile des APT-Befehls auszuführen:
Erstellen Sie eine Datei /etc/apt/apt.conf.d/90my_dpkg_post_invoke
mit Inhalt
DPkg::Post-Invoke { "/usr/local/lib/my_dpkg_post_invoke.sh"; }
Erstellen Sie eine ausführbare Datei /usr/local/lib/my_dpkg_post_invoke.sh
mit Inhalt
#!/bin/bash
APTPID=$( ps -ho ppid "${PPID}" )
APTPID="${APTPID## }" # trim leading spaces
APTCMD=$( ps -ho args "${APTPID}" )
APTCMD="${APTCMD## }" # trim leading spaces
echo "#### APT Command: ${APTCMD}"
Nun können Sie die ausführbare Datei um einen Test erweitern, ob sie ${APTCMD}
einen String enthält, für den Sie eine Aktion auslösen möchten.