Ich installiere und teste viele Anwendungen in meinen Linux-VMs. Sobald die Tests abgeschlossen sind, werde ich die installierten Pakete entfernen, die nicht mehr verwendet werden. Da ich oft viele Anwendungen installiere, finde ich es etwas zeitaufwändig, Pakete einzeln manuell zu entfernen. Außerdem vergesse ich manchmal, die unnötigen Pakete zu deinstallieren. Wenn Sie so etwas wie ich sind, finden Sie hier eine einfache Problemumgehung, um alle Pakete zu finden und zu entfernen, die an einem bestimmten Datum und zu einer bestimmten Uhrzeit in Linux installiert wurden.
Wie Sie vielleicht bereits wissen, finden wir die Liste der installierten Pakete nach Installationsdatum sortiert in verschiedenen Linux-Distributionen mit einem der folgenden Befehle.
Unter Arch Linux, EndeavourOS und Manjaro Linux:
$ expac --timefmt='%Y-%m-%d %T' '%l\t%n'|sort -n
Unter Fedora, RHEL, CentOS, AlmaLinux und Rocky Linux:
$ sudo rpm -qa --last
Unter Debian, Ubuntu, Linux Mint und Pop OS:
$ grep " install " /var/log/dpkg.log
Die obigen Befehle listen alle Pakete auf, die an allen Daten installiert wurden. Wir sind jedoch daran interessiert, Pakete zu finden und zu löschen, die zu einem bestimmten Datum und zu einer bestimmten Uhrzeit installiert wurden nur.
Wir können %yyyy-%mm-%dd
verwenden Parameter mit grep Befehl, um alle Pakete aufzulisten, die an einem bestimmten Datum und zu einer bestimmten Uhrzeit installiert wurden.
Der folgende Befehl zeigt beispielsweise alle installierten Pakete am 14. September 2021 in meinem Debian 11 Bullseye-System an.
$ grep "2021-09-14.*.install " /var/log/dpkg.log
Beispielausgabe:
2021-09-14 06:51:51 install tmpreaper:amd64 <none> 1.6.14+nmu2 2021-09-14 11:14:14 install hello:amd64 <none> 2.10-2 2021-09-14 11:17:13 install hello:amd64 <none> 2.10-2 2021-09-14 11:17:13 install tmpreaper:amd64 <none> 1.6.14+nmu2 2021-09-14 11:22:29 install hello:amd64 <none> 2.10-2 2021-09-14 11:22:29 install tmpreaper:amd64 <none> 1.6.14+nmu2 2021-09-14 11:41:16 install nano:amd64 5.4-2 5.4-2 2021-09-14 11:41:17 install tmpreaper:amd64 <none> 1.6.14+nmu2 2021-09-14 11:41:17 install vim-runtime:all 2:8.2.2434-3 2:8.2.2434-3 2021-09-14 11:41:18 install vim:amd64 2:8.2.2434-3 2:8.2.2434-3
Wie Sie in der obigen Ausgabe sehen, habe ich tmpreaper installiert , vim und Nano Pakete.
Wenn die Protokollrotation aktiviert ist, der Inhalt von /var/log/dpkg.log
Datei wird gelöscht. In diesem Fall können Sie die vorherige Installationsprotokolldatei mit folgendem Befehl anzeigen:
$ grep "2021-09-14.*.install " /var/log/dpkg.log.1
Wenn Sie nur die Paketnamen ohne Installationsdatum/-zeit und Architekturdetails aus der Ausgabe auflisten möchten, führen Sie Folgendes aus:
$ grep "2021-09-14.*.install " /var/log/dpkg.log | awk '{ print $4 }' | cut -d: -f1
Sie sehen jetzt nur die installierten Paketnamen zum angegebenen Datum:
tmpreaper hello hello tmpreaper hello tmpreaper nano tmpreaper vim-runtime vim
Wir haben jetzt die Namen aller installierten Pakete zum angegebenen Datum.
Um alle an einem bestimmten Datum installierten Pakete zu deinstallieren, fügen Sie einfach das entsprechende apt
hinzu Befehlsargumente mit xargs
am Ende des vorherigen Befehls.
Bitte beachten Sie, dass die folgenden Befehle keine Benutzerbestätigung verlangen vor dem Löschen der Pakete. Daher ist es immer eine gute Praxis, einen Trockenlauf durchzuführen um zu überprüfen, welche Pakete entfernt werden, bevor der eigentliche Befehl ausgeführt wird.
Um den Prozess der Paketentfernung zu simulieren (Probelauf), fügen Sie einfach -s
hinzu oder --simulate
wie unten.
$ grep "2021-09-14.*.install " /var/log/dpkg.log | awk '{ print $4 }' | cut -d: -f1 | xargs sudo apt purge -y -s
Der obige Befehl simuliert nur den Paketentfernungsprozess, löscht die Pakete jedoch nicht.
Sobald Sie herausgefunden haben, welche Pakete entfernt werden, führen Sie den obigen Befehl ohne -s
erneut aus oder --simulate
Möglichkeit:
$ grep "2021-09-14.*.install " /var/log/dpkg.log | awk '{ print $4 }' | cut -d: -f1 | xargs sudo apt purge -y
Wenn die Protokollrotation aktiviert ist, führen Sie stattdessen diesen Befehl aus:
$ grep "2021-09-14.*.install " /var/log/dpkg.log.1 | awk '{ print $4 }' | cut -d: -f1 | xargs sudo apt purge -y
Diesmal werden die am angegebenen Datum installierten Pakete von Ihrem System entfernt.
Verwandte Lektüre:
- So finden und entfernen Sie nicht verwendete Pakete in Linux
- So entfernen Sie installierte Pakete aus einem bestimmten Repository in CentOS, Fedora
- Der einfache Weg, eine Paketgruppe in Arch Linux zu installieren und zu entfernen
- Ein einfacher Weg, Programme zu entfernen, die von der Quelle in Linux installiert wurden