GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Entfernen Sie Pakete, die an einem bestimmten Datum/einer bestimmten Uhrzeit in Linux installiert wurden

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

Linux
  1. So installieren Sie Pakete aus einem bestimmten Repository in Linux

  2. So listen Sie installierte Pakete aus einem bestimmten Repository in Linux auf

  3. So listen Sie alle installierten Pakete in Linux auf

  4. So installieren/entfernen/abfragen/aktualisieren Sie RPM-Pakete unter Linux (Spickzettel)

  5. Alle von mir installierten Pakete vollständig entfernen?

Entfernen Sie Pakete, die an einem bestimmten Datum/einer bestimmten Uhrzeit in Linux installiert wurden

So installieren und entfernen Sie Software in Manjaro Linux

So finden Sie das Installationsdatum und die Uhrzeit des Linux-Betriebssystems

11 Nützliche Beispiele für Linux-Datumsbefehle

So stellen Sie Datum und Uhrzeit unter Linux ein

Beispiele für Linux-Datumsbefehle