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

Debian – Pakete auf einem Apt-basierten System nach Installationsdatum auflisten?

Wie kann ich installierte Pakete nach Installationsdatum auflisten?

Ich muss dies auf Debian/Ubuntu tun. Antworten für andere Distributionen wären auch nett.

Ich habe eine Menge Zeug installiert, um ein bestimmtes Stück Code zu kompilieren, und ich möchte eine Liste der Pakete erhalten, die ich installieren musste.

Akzeptierte Antwort:

RPM-basierte Distributionen wie Red Hat sind einfach:

rpm -qa --last

Bei Debian und anderen dpkg-basierten Distributionen ist Ihr spezifisches Problem ebenfalls einfach:

grep install /var/log/dpkg.log

Es sei denn, die Protokolldatei wurde rotiert. In diesem Fall sollten Sie Folgendes versuchen:

grep install /var/log/dpkg.log /var/log/dpkg.log.1

Im Allgemeinen dpkg und apt scheinen das Installationsdatum nicht nachzuverfolgen, was auf das Fehlen eines solchen Feldes in der dpkg-query zurückzuführen ist Manpage.

Und schließlich die alte /var/log/dpkg.log.* Dateien werden durch Protokollrotation gelöscht, sodass Sie auf diese Weise nicht garantiert den gesamten Verlauf Ihres Systems erhalten.

Ein Vorschlag, der einige Male auftaucht (z. B. in diesem Thread), ist, sich die Datei /var/lib/dpkg/info anzusehen Verzeichnis.
Die Dateien dort schlagen vor, dass Sie Folgendes versuchen könnten:

ls -t /var/lib/dpkg/info/*.list | sed -e 's/.list$//' | head -n 50

Um Ihre Frage zur Auswahl zu beantworten, hier ein erster Durchgang.

Paketliste nach Datum erstellen

$ find /var/lib/dpkg/info -name "*.list" -exec stat -c $'%nt%y' {} ; | 
    sed -e 's,/var/lib/dpkg/info/,,' -e 's,.listt,t,' | 
    sort > ~/dpkglist.dates

Liste der installierten Pakete erstellen

$ dpkg --get-selections | sed -ne '/tinstall$/{s/[[:space:]].*//;p}' | 
    sort > ~/dpkglist.selections

Tritt den 2 Listen bei

$ join -1 1 -2 1 -t $'t' ~/dpkglist.selections ~/dpkglist.dates 
    > ~/dpkglist.selectiondates

Aus irgendeinem Grund gibt es für mich nicht sehr viele Unterschiede aus, also könnte es einen Fehler oder eine ungültige Annahme darüber geben, was --get-selections ist bedeutet.

Sie können die Pakete natürlich auch einschränken, indem Sie find . -mtime -<days> oder head -n <lines> , und ändern Sie das Ausgabeformat nach Belieben, z. B.

$ find /var/lib/dpkg/info -name "*.list" -mtime -4 | 
    sed -e 's,/var/lib/dpkg/info/,,' -e 's,.list$,,' | 
    sort > ~/dpkglist.recent

$ join -1 1 -2 1 -t $'t' ~/dpkglist.selections ~/dpkglist.recent 
    > ~/dpkglist.recentselections

um nur die Auswahlen aufzulisten, die in den letzten 4 Tagen installiert (geändert?) wurden.

Sie könnten wahrscheinlich auch die sort entfernen Befehle nach Überprüfung der von dpkg --get-selections verwendeten Sortierreihenfolge und machen Sie den find Befehl effizienter.


Debian
  1. So listen Sie alle oder bestimmte Pakete auf, die auf einem Debian/Ubuntu-Linux-System installiert sind

  2. Debian-basiertes System, nur ein GUI-Programm, sonst nichts?

  3. Debian – Automatisierung der Installation einzelner Debian-8-Pakete mit interaktiven Eingabeaufforderungen?

  4. Debian – Devuan/Debian-Installation kann nicht gestartet werden?

  5. Debian – Wie konvertiere ich ein 32-Bit (x86) Debian-basiertes System in 64-Bit?

So konfigurieren Sie sources.list unter Debian 10

So konfigurieren Sie sources.list unter Debian 9

So installieren Sie Pakete unter Debian 10

So listen Sie installierte Pakete sortiert nach Installationsdatum in Linux auf

So listen Sie alle aktualisierbaren Pakete in Ubuntu, Debian &Mint auf

So entfernen Sie Pakete von Ubuntu &Debian