
Das Software Center zeigt eine recht kurze Liste der installierten Pakete an. Wie bekomme ich sie in einer Textdatei?
Ich habe es versucht:
> dpkg --get-selections|wc -l
3265
> aptitude search '~i!~M'|wc -l
1181
> dpkg -l | grep ^ii | sed 's_ _\t_g' | cut -f 2|wc -l
3076
> dpkg --get-selections | grep -v deinstall|wc -l
3076
> apt-mark showmanual|wc -l
1181
Ich weiß, dass ich einige Dutzend Pakete installiert habe, nicht Tausende. Ich brauche in der Liste genau die Pakete, die ich ohne Abhängigkeiten ausgewählt habe, um sie zu überprüfen.
AKTUALISIEREN
Vielen Dank an @kos, ich habe die Liste endlich mit diesem Befehl bekommen:
> zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline: apt-get install \K.*' | tr ' ' '\n' | grep -v '\-\-reinstall'|grep -v '\-\-force-yes'|grep -v '\-y'|grep -v '\-f'|sort|uniq wc -l
103
Antwort1
Dies beantwortet die Frage nicht genau: Es enthält vielmehr einen Befehl zum Auflisten aller apt-get install
jemals ausgeführten Befehle sowie einige Ratschläge zum weiteren Parsen der Liste, um eine Liste aller apt-get install
jemals ausgeführten Befehle zu erhalten, mit Ausnahme der von Ubiquity ausgeführten, da es für diese Aufgabe offenbar keine perfekte Lösung gibt.
zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*'
zcat /var/log/apt/history.log.*.gz
: dekomprimiert alle komprimiertenapt
Protokolle in/var/log/apt
, verkettet sie und druckt sie instdout
;cat - /var/log/apt/history.log
: hängt an/var/log/apt/history.log
und druckt anstdout
;grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*'
: wählt nur die Zeilen aus, die mit beginnen und ein führendes und nachfolgendes LeerzeichenCommandline: apt-get
enthalteninstall
, und druckt den Rest jeder ausgewählten Zeile instdout
;
Dadurch wird die Liste aller apt-get install
jemals ausgeführten Befehle ausgegeben (die einzige unberücksichtigte Ausgabe könnte ein apt-get
-Nicht- install
Befehl sein, der ein Paket erwähnt install
, aber dieses Paket existiert (noch?) nicht, zumindest nicht in den Standard-Repositorys);
Notiz:In meiner Installation (Ubuntu 15.04 64-Bit) sind die ersten vier aufgelisteten Befehle diejenigen, die von Ubiquity während der Installation ausgeführt werden. Um diese auszuschließen, können Sie die Ausgabe wie folgt umleiten sed
:
sed '1,4d'
Damit das FinaleungefährBefehl für Ubuntu 15.04 64-Bit wäre:
zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*' | sed '1,4d'
Antwort2
apt-mark Showmanual
gibt Ihnen eine Liste aller manuell installierten Pakete ohne die Abhängigkeiten. Wichtig zu beachten ist, dass auch angezeigt wird, welche Pakete während der Ubuntu-Einrichtung installiert wurden.
So schreiben Sie die Ausgabe in eine Datei:
apt-mark showmanual > einige Dateien
Es gibt tatsächlich viele andere Möglichkeiten, beispielsweise die Verwendung dieses Befehls
comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)
Obwohl ich absolut keine Ahnung habe, wie das oben genannte funktioniert ;)
So zeigen Sie die installierten Pakete nach Datum an:
Nach Verwendungsdatum installierte Pakete. Mit Verwendung cat /var/log/dpkg.log | grep "\ install\ > somefile"
installierte Pakete – das ist wahrscheinlich das, wonach Sie suchen.dpkg
ls -l /var/log/dpkg* > somefile
So zeigen Sie mit dpkg installierte Pakete an:
Diese Datei enthält die oben genannten Informationen:/var/log/dpkg.log
Antwort3
Dies ist tatsächlich komplizierter als es scheint und es gibt einige ähnliche Fragen auf Ask Ubuntu.
Ich habe festgestellt, dass beim Blick in /var/log/apt/history.log
die älteren gzippten Versionen dieses Protokolls alles, was durch einen apt-get install
Befehl installiert wurde, als durch diesen Befehl installiert aufgeführt wird.
Also:
grep "apt-get install" /var/log/apt/history.log
Zeigt Ihnen alle für den Zeitraum, den das aktuelle Apt-History-Log abdeckt. Sie benötigen gunzip
Ihre älteren Logs und greppen diese, um alle Ihre Informationen zusammenzutragen. Die Grep-Befehle könnten alle in eine Textdatei umgeleitet werden, um Ihnen eine übersichtliche Liste zu geben.
Dies ist in Ihrem Fall wahrscheinlich nur dann sinnvoll, wenn apt-get install
bei der Installation das Software Center verwendet wird. Ich weiß, dass das Software Center ein Frontend dafür ist, apt
bin mir aber nicht sicher, ob es diesen Befehl explizit verwendet.
Antwort4
Dieser Befehl gibt eine Liste der manuell installierten Pakete aus, sowie der Pakete, bei denen die „automatisch installierten“ umgekehrten Abhängigkeiten entfernt wurden (wenn Sie beispielsweise das Ubuntu-Server-Metapaket entfernen, werden dessen Abhängigkeiten nicht mehr als automatisch gekennzeichnet und stehen nun auf dieser Liste):
apt list --installed | grep -v automatic
Mit anderen Worten: Die obige Liste gibt alle Pakete zurück, die entweder keine umgekehrten Abhängigkeiten aufweisen oder die auch als manuell installiert gekennzeichnet sind.