Antworten:
Alle Aktionen mit apt (apt-get) werden protokolliert. Diese Dateien sind in / var / log / apt / verfügbar. Führen Sie zum Anzeigen des neuesten Verlaufsprotokolls Folgendes aus:
less /var/log/apt/history.log
Diese Protokolle werden rotiert (jeden Monat, denke ich), alte Dateien werden mit einer Nummer versehen und komprimiert. Verwenden Sie zum Anzeigen des nächsten Verlaufsprotokolls Folgendes:
zless /var/log/apt/history.log.1.gz
So zeigen Sie die verfügbaren Protokolle an:
ls -la /var/log/apt/
Sie können auch einen kurzen Befehl eingeben, um den interessanten Inhalt anzuzeigen.
Fügen Sie diese benutzerdefinierte Funktion hinzu zu ~/.bashrc
:
### pars for fun: install | remove | rollback
function apt-history(){
case "$1" in
install)
grep 'install ' /var/log/dpkg.log
;;
upgrade|remove)
grep $1 /var/log/dpkg.log
;;
rollback)
grep upgrade /var/log/dpkg.log | \
grep "$2" -A10000000 | \
grep "$3" -B10000000 | \
awk '{print $4"="$5}'
;;
*)
cat /var/log/dpkg.log
;;
esac
}
Und nennen Sie es in einem Terminal wie folgt:
kreso@h17:~$ apt-history install
2013-08-06 14:42:36 install gir1.2-nautilus-3.0:amd64 <none> 1:3.8.2-0ubuntu1~ubuntu13.04.1
2013-08-06 14:42:36 install python-nautilus:amd64 <none> 1.1-3ubuntu1
2013-08-06 14:42:37 install insync-nautilus:all <none> 1.0.20
2013-08-07 14:41:37 install powertop:amd64 <none> 2.1-0ubuntu1
2013-08-07 18:44:10 install libdiscid0:amd64 <none> 0.2.2-3build1
2013-08-07 18:44:11 install sound-juicer:amd64 <none> 3.5.0-0ubuntu1
Von hier genommen
zgrep ... /var/log/dpkg.log*
- gibt auch Einträge aus Archiven aus.
Sie können auch den folgenden Befehl verwenden, um kürzlich installierte Pakete aufzulisten
grep "\ install\ " /var/log/dpkg.log
grep "\ install\ " /var/log/apt/history.log
falls Sie eine Liste kopieren und in apt-get
Wenn Sie möchten, dass diese Pakete installiert und anschließend nicht deinstalliert werden, versuchen Sie Folgendes:
comm -23 <(grep "apt-get install" /var/log/apt/history.log | sed 's/.* //' | sort) \
<(grep "apt-get remove" /var/log/apt/history.log | sed 's/.* //' | sort)
Dies ist die Installation abzüglich aller übereinstimmenden Entfernungen.
Verweise:
sort
Verwenden Sie sort -u
in beiden Fällen stattdessen auch , um zu vermeiden, dass doppelte Zeilen angezeigt werden, z. B. in paketähnlichen oracle-java8-installer
und vielen anderen.
Hier ist, wie Sie es tatsächlich tun, sagen Sie Paket mutter:
_P=mutter &&
(cat /var/log/dpkg.log{,.1};zcat /var/log/dpkg.log.*.gz) |
egrep --text "^[^ ]* [^ ]* (configure|install|remove|status [^ ]*|trigproc|upgrade) $_P[: ]" |
sort --reverse | less
Mit dpkg.log werden Vorgänge erfasst, die von apt-get nicht angezeigt werden .
Ausgabe:
2016-12-20 09:47:35 status unpacked mutter:amd64 3.22.2-2ubuntu1~ubuntu16.10.1
2016-12-20 09:47:35 status installed mutter:amd64 3.22.2-2ubuntu1~ubuntu16.10.1
…
Um den Update-Verlauf eines bestimmten Pakets abzurufen, sofern es über apt installiert / aktualisiert wurde, sehen Sie sich einen Oneliner (bash und zgrep) an. Beispiel für das Paket skypeforlinux:
package='skypeforlinux'; pregex="(${package}[^\)]+\))"; while read -r line; do [[ "$line" =~ ^Start-Date:[[:space:]]([[:digit:]].+) ]] && curdate="${BASH_REMATCH[1]} "; [[ "$line" =~ $pregex ]] && echo "$curdate ${BASH_REMATCH[1]}"; done < <(for i in `ls -tr /var/log/apt/history*`; do zgrep -B3 "$package" $i; done)
Dadurch werden die Verlaufsprotokolldateien von apt für skypeforlinux einschließlich der vorherigen drei Zeilen durchsucht, um das Datum abzurufen. Durchläuft dann das Ergebnis und gibt die relevanten Daten und Versionen wieder.
Ersetzen Sie den Wert der Paketvariablen durch Ihren Paketnamen. Dies funktioniert auch für mehrere Pakete, sofern diese mit derselben Zeichenfolge beginnen.
Beispiel mit Ausgabe:
package='apache'; pregex="(${package}[^\)]+\))"; while read -r line; do [[ "$line" =~ ^Start-Date:[[:space:]]([[:digit:]].+) ]] && curdate="${BASH_REMATCH[1]} "; [[ "$line" =~ $pregex ]] && echo "$curdate ${BASH_REMATCH[1]}"; done < <(for i in `ls -tr /var/log/apt/history*`; do zgrep -B3 "$package" $i; done)
2017-10-19 15:00:09 apache2-utils:amd64 (2.4.18-2ubuntu3.5)
2017-11-24 14:24:45 apache-pom-java:amd64 (10-2build1, automatic)
2018-02-22 16:42:02 apache2-data:amd64 (2.4.18-2ubuntu3.5, automatic)
2018-02-26 15:34:34 apache2:amd64 (2.4.18-2ubuntu3.5)
2018-02-26 15:36:32 apache2-data:amd64 (2.4.18-2ubuntu3.5)
2018-02-26 15:40:50 apache2-data:amd64 (2.4.18-2ubuntu3.5, automatic)
2018-02-26 15:42:07 apache2:amd64 (2.4.18-2ubuntu3.5)
2018-02-26 15:42:39 apache2:amd64 (2.4.18-2ubuntu3.5)
2018-03-15 10:08:50 apache-pom-java:amd64 (10-2build1)
2018-04-20 08:55:07 apache2-data:amd64 (2.4.18-2ubuntu3.5, 2.4.18-2ubuntu3.8)
2018-07-06 08:55:11 apache2-data:amd64 (2.4.18-2ubuntu3.8, 2.4.18-2ubuntu3.9)