Kommentare
- Beide Antworten hier erwähnen die
history.log
Dateien in/var/log/apt/
. ' ist zu beachten, dass logrotate standardmäßig so konfiguriert ist, dass nur die letzten 12 Monate dieser Dateien gespeichert werden. Gleiches gilt fürthe /dpkg.log
-Dateien in/var/log
(die ähnliche Informationen in einem (IMO) einfacher zu analysierenden Format bereitstellen). Bearbeiten Sie/etc/logrotate.d/{apt,dpkg}
, um die Aufbewahrungsrichtlinie für Ihr System zu ändern.
Antwort
Sie können das installierte Paket mit apt
mit dem folgenden Befehl auflisten:
apt --installed list
Bearbeiten Sie
Verwenden Sie den folgenden Befehl, um das installierte Paket über apt-get
aufzulisten:
zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po "^Commandline: apt-get install (?!.*--reinstall)\K.*"
Kommentare
- Wie Sie angegeben haben, werden alle installierten Pakete aufgelistet. Ich möchte Pakete, die ich manuell mit den Befehlen
apt-get
installiert habe. - @ user598200 – Akzeptieren Sie diese Antwort möglicherweise. 🙂
- Basierend auf dieser askubuntu-Antwort komme ich zu
(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null | egrep '^(Commandline: apt(-get)? install)' | grep -v aptdaemon | egrep '^Commandline:'
-
zgrep -hPo '^Commandline: apt-get install (?!.*--reinstall)\K.*' /var/log/apt/history.log{.*.gz,}
erzeugt dieselbe Ausgabe ohne die unnötigenzcat
undcat
. Wenn Sie sich ' nicht um die genaue Reihenfolge der Paketnamen in der Ausgabe kümmern, reicht/var/log/apt/history.log*
für das Dateinamenargument aus.
Antwort
zgrep -h " install " /var/log/dpkg.log* | sort | awk "{print $4}"
Dies gibt Ihnen eine Liste der Pakete, die haben wurden in der Reihenfolge installiert, in der sie installiert wurden.
Gemäß meinem Kommentar werden standardmäßig nur die /var/log/dpkg.log*
-Dateien der letzten 12 Monate beibehalten. Um dies zu ändern, bearbeiten Sie /etc/logrotate.d/dpkg
. Ändern Sie beispielsweise rotate 12
in rotate 1200
, um den Wert der letzten 1200 Monate (100 Jahre) beizubehalten – effektiv für immer, löschen Sie niemals die alten Protokolle.
Übrigens, wenn Sie sehen möchten, wann Pakete aktualisiert wurden, ändern Sie install
in upgrade
. zB
zgrep -h " upgrade " /var/log/dpkg.log* | sort
dasselbe für remove
und purge
.
Antwort
Wenn Sie nur eine Liste mit den Paketen anzeigen möchten, haben Sie manuell installierte Sie könnten Folgendes ausführen:
apt --installed list | grep -v automatic
, um Pakete nicht aufzulisten, die als automatisch installiert gekennzeichnet sind
-v, --invert-match Invert the sense of matching, to select non-matching lines.
Eine weitere Option, die ein unglückliches Paket mit " automatisch " in seinem Namen lautet:
apt-mark showmanual
Kommentare
- Kurz und bündig und alphabetisch sortiert.
- Wenn ein Paketname zufällig " automatisch " enthält, wird er durch grep herausgefiltert.
Antwort
Dies hängt von aptitude
ab, aber das Folgende gibt Ihnen eine Liste von pa Manuell installierte Pakete, dh sie werden nicht nur aufgrund von Abhängigkeiten installiert:
aptitude search -F %p "~i!~M"
Je nachdem, wie das Image eingerichtet ist, werden wahrscheinlich auch einige installiert durch das Basissystem. Sie können einiges davon loswerden, indem Sie sie auf automatisch installiert umstellen und dann die wenigen, die Sie behalten möchten, als manuell markieren, obwohl Sie nichts davon abhängig haben. Dies ist einfach mit M innerhalb von aptitude
auf einem nackten System zu tun.
Antwort
Verwenden Sie dpkg
, um alle auf einem System installierten Pakete aufzulisten: dpkg --get-selections
So listen Sie alle mit apt-get
/var/log/apt/history.log
. Dieses Protokoll enthält auch Pakete, die Sie entfernt haben. Sie können grep
für die Zeilen verwenden, die mit Install:
beginnen.
Kommentare
- Wie Sie angegeben haben, werden alle installierten Pakete aufgelistet. Ich möchte Pakete, die ich manuell mit den Befehlen
apt-get
installiert habe. - @ user598200 Ah. Danke für das Aufklären. Siehe meine bearbeitete Antwort. Ich bin nicht sicher, ob
apt-get
diese Funktionalität hat. Aber wenn Sie etwas installieren, wird es an die Protokolldatei angehängt, die ich in der Antwort erwähne. - Danke.Wie kann ich alle
/var/log/apt/history.log*
-Dateien durchgehen und die Paketnamen mit einem Schlag ausdrucken? - @ user598200 Sie können .
grep "Install: package" /var/log/apt/history.log*
Antwort
Ubuntu 14.04 und höher verwenden apt list --installed
für ältere Versionen verwenden Sie dpkg --get-selections | grep -v deinstall
Antwort
Etwas kürzer und sortiert
gunzip -c /var/log/apt/history.log.*.gz | grep "apt-get install" | cut -f4- -d" " | tr " " $"\n" | sort -u
Kommentare
- Einige Erklärungen, warum dies so ist Besser als die Antwort, die @ GAD3R gegeben hat, wäre hilfreich.
- Erstens ist es ' kürzer, zweitens ist die Ausgabe sortiert
- Die Idee zu U & L ist, dass Sie Ihre Antwort (oder Frage, falls Sie eine gepostet haben) verbessern, indem Sie den Beitrag bearbeiten, anstatt wertvolle Informationen in Kommentaren zu verbergen. Da ich den Befehl ausschneiden und einfügen würde, sind die 26 Bytes weniger nicht so interessant, aber die Tatsache, dass Ihre Ausgabe sortiert ist, gehört wirklich zur Antwort selbst. Wenn eine solche Verbesserung eine Reaktion auf eine Aufforderung zur Klärung war, hat ein einfaches " meine Antwort " aktualisiert, wie es der Kommentar tun wird, der Kommentator ( In diesem Fall werde ich über diesen Kommentar informiert. Ich denke, die Knappheit ist auch die Ursache dafür, dass jemand Ihre Antwort abgelehnt hat.
- Wenn Sie Golf spielen möchten, versuchen Sie es mit
zgrep -Pho '(?<=apt-get install ).*' /var/log/apt/history.log.*.gz | tr ' ' $'\n' | sort -u
.