Ist es möglich, eine Liste der zuletzt installierten Pakete abzurufen?

157

Ist es möglich, eine Liste der Pakete abzurufen, die zuletzt über apt-get installiert wurden?

Olivier Lalonde
quelle
1
Nun, wenn mir nur jemand sagen würde, wie ich die manuell installierten Pakete auflisten soll, die ich noch nicht entfernt habe. Seufz Linux.
Aleksandr Dubinsky
1
@AleksandrDubinsky apt-mark showmanual | lessmacht das nicht?
GKFX
@GKFX meinte ich im Zusammenhang mit kürzlich installierten Paketen.
Aleksandr Dubinsky
@AleksandrDubinsky würden Sie haben zu verwenden , comm -12 a bmit aeiner sortierten Kopie apt-mark showmanualund bunterhalb einer sortierten Liste von einem der Antworten.
GKFX

Antworten:

180

Befehl zum Auflisten kürzlich installierter Pakete, die mit einer beliebigen Methode installiert wurden ( apt-get, Software Center et al.):

grep " install " /var/log/dpkg.log

Beispielausgabe:

2010-12-08 15:48:14 install python-testtools <none> 0.9.2-1
2010-12-08 15:48:16 install quickly-widgets <none> 10.09
2010-12-08 22:21:31 install libobasis3.3-sdk <none> 3.3.0-17
2010-12-09 12:00:24 install mc <none> 3:4.7.0.6-1
2010-12-09 23:32:06 install oggconvert <none> 0.3.3-1ubuntu1
2010-12-09 23:34:50 install mpg123 <none> 1.12.1-3ubuntu1
2010-12-09 23:34:52 install dir2ogg <none> 0.11.8-1
2010-12-09 23:34:53 install faad <none> 2.7-4
2010-12-09 23:34:54 install wavpack <none> 4.60.1-1
2010-12-10 11:53:00 install playonlinux <none> 3.8.6

Sie können diesen Befehl ausführen, um nur die kürzlich installierten Paketnamen aufzulisten.

awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log

Befehl zum Auflisten des Verlaufs von apt-get(HINWEIS: In diesem Befehl werden keine installierten Abhängigkeiten aufgeführt, sondern lediglich die zuvor ausgeführten apt-getBefehle):

grep " install " /var/log/apt/history.log

Beispielausgabe:

Commandline: apt-get install libindicate-doc
Commandline: apt-get install googlecl
Commandline: apt-get --reinstall install ttf-mscorefonts-installer
Commandline: apt-get install valac libvala-0.10-dev
Commandline: apt-get install libgtksourceview-dev
Commandline: apt-get install python-sphinx
Commandline: apt-get install python-epydoc
Commandline: apt-get install quickly-widgets
Commandline: apt-get install libreoffice3* libobasis3.3*
Commandline: apt-get install mc
Jesaja
quelle
Das Problem mit synaptic ist, dass es nicht zeigt, was Sie mit aptitude, apt-get und dpkg tun, aus diesem Grund +1 für diese Option
HLP
Dieser Befehl zeigt keine Updates an. Verwenden Sie das Software-Center, um alles zu sehen.
HDave
1
Es könnte besser sein, eine Textdatei wie diese zu speicherncat /var/log/apt/history.log | grep "\ install\ " > install.log
CrandellWS
4
grep " install " /var/log/dpkg.logwird genügen. Es gibt keine Notwendigkeit zu verwenden cat. Siehe auch das .
August
1
Beachten Sie, dass dies nur Pakete zu finden scheint, die neu installiert wurden. Pakete, für die eine neue Version installiert wurde, erscheinen wie upgradeindpkg.log
Andre Holzner
14

Ubuntus Software Center zeigt den gesamten Verlauf aller Pakete, die installiert / aktualisiert / entfernt wurden. Klicken Sie einfach links unten in der Liste auf "Verlauf".

Rafał Cieślak
quelle
4
Diese Verlaufsschaltfläche befindet sich jetzt oben in der GUI und kann installierte Pakete und Updates anzeigen. Dies sollte die akzeptierte Antwort auf die Frage sein, da dies die einzige Antwort ist, die für Updates funktioniert.
HDave
Diese Frage gibt keine Desktopumgebung (GUI) an, die akzeptierte Antwort ist jedoch sowohl in GUI- als auch in Nicht-GUI-Szenarien gültig.
msanford
@HDave Auf jeden Fall nicht wahr, dpkg.logprotokolliert Updates.
GKFX
10

So zeigen Sie auch ältere Pakete sortiert nach Installationszeitpunkt an:

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

Und für Pakete, die vor sehr langer Zeit installiert wurden:

gunzip -c `ls -tr /var/log/dpkg.log.*.gz` | grep " install "
Valentas
quelle
Ich habe ein Paket gefunden, das vor 2 Tagen in installiert wurde /var/log/dpkg.log, aber nicht in /var/log/apt/history.log. Ich weiß immer noch nicht warum ...
Samuel Li
5

Der folgende Trick beantwortet die Anfrage von Aleksandr Dubinsky, diese auf manuell installierte Pakete zu beschränken:

comm -12 <(apt-mark showmanual | sort) <(grep " install " /var/log/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)
  • comm -12 listet Zeilen auf, die zwei sortierten Dateien gemeinsam sind.
  • <(command)wird zum Namen einer Datei erweitert, die die Ausgabe von enthält command.
  • apt-mark showmanuallistet manuell installierte Pakete auf; dh diejenigen, die niemals automatisch entfernt werden sollten.
  • grep " install " /var/log/dpkg.log wird aus der akzeptierten Antwort übernommen.

Eine Alternative, die weitere Informationen in chronologischer Reihenfolge anzeigt und auf alle verfügbaren Protokolle zugreift, ist:

zcat -f /var/log/dpkg.log* | grep " install " | sort > /tmp/dpkg.log
grep -F "`comm -12 <(apt-mark showmanual | sort) <(cat /tmp/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)`" /tmp/dpkg.log | grep \<none\>

grep \<none\>Beschränkt die Ergebnisse auf Neuinstallationen. Sie können beispielsweise grep verwenden, um die Suche durch Hinzufügen grep 2016-0[567]zur ersten Pipeline auf einen Zeitraum von drei Monaten zu beschränken . es ist sehr flexibel.

GKFX
quelle
Das rückt näher. Dinge, die verbessert werden könnten: 1) Zeigen Sie die Pakete in chronologischer Reihenfolge an, 2) Zeigen Sie weitere Details wie Installationsdatum / -zeit, Version, möglicherweise sogar Größe an. 3) Zeigen Sie alle Pakete an, die seit der Installation des Betriebssystems installiert wurden.
Aleksandr Dubinsky
Tolle! Macht es Ihnen etwas aus, wenn ich Ihre Antwort bereinige, um genauere Erklärungen zu jedem Befehl zu erhalten?
Aleksandr Dubinsky
@AleksandrDubinsky Danke für die Bearbeitung; Ich habe die Beschreibung so korrigiert, dass sie den von Ihnen vorgenommenen Änderungen entspricht.
GKFX
Stört es Sie, wenn ich das Rauschen "Folgende Tricks beantworten Aleksandr Dubinskys Bitte" entferne, den ersten Befehl, der nicht nützlich ist, setzen Sie eine gute Überschrift, setzen Sie den Hauptbefehl oben drauf, fügen Sie eine Beispielausgabe hinzu und versuchen Sie, alle Befehle zu beschreiben beteiligt?
Aleksandr Dubinsky
1
Im letzten Befehl ist ein Fehler aufgetreten, da grep -Fteilweise Übereinstimmungen gefunden wurden. Wenn beispielsweise python3installiert ist, werden auch alle Python3-Bibliotheken ( python3-click-package) berücksichtigt, auch solche, die nicht mehr installiert sind. Außerdem grep -Fwhilft da -keine Wortgrenze.
Aleksandr Dubinsky
5

Alles in einer Zeile; für Befehlsgebrauch

Wählen Sie nur die kürzlich installierten Paketnamen aus und drucken Sie sie in einer Zeile aus.

Ändern Sie dazu die am häufigsten gewählte Antwort in:

cat /var/log/dpkg.log |awk '/ install / {printf "%s ",$4}'

Dies führt zu einer einzelnen Zeile mit Paketnamen. Eine solche Zeile kann leicht zu einem sudo apt-get purgeBefehl hinzugefügt werden .

Beispielausgabe

libgnome-media-profiles-3.0-0 gstreamer0.10-gconf gnome-media gnome-menus librest-0.7-0 libgoa-1.0-common libgoa-1.0-0 libwacom-common libwacom2 ubuntu-docs apg libgnome-control-center1 libgnomekbd-common libgnomekbd7 gnome-control-center-data gnome-icon-theme-symbolic gnome-settings-daemon ubuntu-system-service gnome-control-center gnome-online-accounts gnome-session-bin indicator-power mousetweaks

Pakete untereinander auflisten

Auf vielfachen Wunsch gibt es hier eine leicht angepasste Version, um die Pakete untereinander aufzulisten:

cat /var/log/dpkg.log |awk '/ install / {printf "%s\n",$4}'
Serge Stroobandt
quelle
Analysieren Sie nicht die Ausgabe des catBefehls. Und wie wäre es damit awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log?
Avinash Raj
Ihr @AvinashRaj awkBefehl druckt die Pakete eine unter anderen; meins nebeneinander . Aus diesem Grund kann von Zeit zu Zeit ein Ausgabebeispiel hilfreich sein.
Serge Stroobandt
2

Es gibt ein Paket namens wajig Check it out für die Kommandozeile, es ist das erste, was ich jetzt installiere. Wie aptitude, nur dass es so funktioniert, als würde man erwarten, dass ein Command Dispatcher funktioniert. Also wirklich, es ist nicht wie Eignung. Die folgenden Befehle sind nur eine kleine Teilmenge.

wajig help
Common JIG commands:

 update         Update the list of downloadable packages

 new            List packages that became available since last update
 newupgrades    List packages newly available for upgrading

 install        Install (or upgrade) one or more packages or .deb files
 remove         Remove one or more packages (see also purge)

 toupgrade      List packages with newer versions available for upgrading
 upgrade        Upgrade all of the installed packages or just those listed

 listfiles      List the files that are supplied by the named package
 listnames      List all known packages or those containing supplied string
 whatis         For each package named obtain a one line description
 whichpkg       Find the package that supplies the given command or file

Run 'wajig -v commands' for a complete list of commands.
chiggsy
quelle
5
Ich bin mir nicht sicher, wie es wajighilft, die neuesten Pakete aufzulisten. Ich sehe keinen Befehl dafür, nachdem ich die Befehle kurz durchgesehen habe. Wissen Sie, was der Befehl ist?
Ehtesh Choudhury
1

Zusätzlich zur Antwort von DoR gibt es für diejenigen, die eine grafische Benutzeroberfläche bevorzugen, in Synaptic einen Menüpunkt Datei -> Verlauf.

JanC
quelle
2
Und wie rafalcieslak betont , ist diese Funktion auch im Software Center verfügbar.
Belacqua
3
Der Synaptic-Verlauf zeigt nur, was Sie über Synaptic installiert haben ... völlig nutzlos.
HDave
1

Hier ist eine Shell, um die von dpkg installierten Dateien aufzulisten. (die alle apt / aptitude / software center / synaptic installierten Pakete enthalten sollte)

grep -A 1 "Package: " /var/lib/dpkg/status | \
grep -B 1 -Ee "ok installed|half-installed|unpacked|half-configured|config-files" -Ee "^Essential:yes" | \
grep "Package:" | cut -d\  -f2

Dies beinhaltet keine Informationen zu Installationszeit und -datum. Dies kann jedoch hilfreich sein, um Unterschiede in den von os install bis current installierten Paketen festzustellen.

user2697383
quelle
-1

Das Problem beim Anzeigen des Installationsverlaufs in Software Center oder Synaptic besteht darin, dass es schwierig ist, den Inhalt in eine E-Mail zu kopieren oder einzufügen (z. B. wenn Sie mit dem technischen Support sprechen!). Die Alternative besteht darin, den Inhalt der Protokolldateien /var/log/aptals root anzuzeigen .

Ian Dickinson
quelle
2
Um dies zu verdeutlichen und Inhalte einfach anzuzeigen /var/log/apt, müssen Sie NICHT als Root angemeldet sein oder über Administratorrechte verfügen.
Samuel Li