Wie erhalte ich die Liste der installierten Pakete ohne Abhängigkeiten?

Wie erhalte ich die Liste der installierten Pakete ohne Abhängigkeiten?

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 installjemals ausgeführten Befehle sowie einige Ratschläge zum weiteren Parsen der Liste, um eine Liste aller apt-get installjemals 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 komprimierten aptProtokolle in /var/log/apt, verkettet sie und druckt sie in stdout;
  • cat - /var/log/apt/history.log: hängt an /var/log/apt/history.logund druckt an stdout;
  • grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*': wählt nur die Zeilen aus, die mit beginnen und ein führendes und nachfolgendes Leerzeichen Commandline: apt-getenthalten install, und druckt den Rest jeder ausgewählten Zeile in stdout;

Dadurch wird die Liste aller apt-get installjemals ausgeführten Befehle ausgegeben (die einzige unberücksichtigte Ausgabe könnte ein apt-get-Nicht- installBefehl 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.dpkgls -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.logdie älteren gzippten Versionen dieses Protokolls alles, was durch einen apt-get installBefehl 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 gunzipIhre ä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 installbei der Installation das Software Center verwendet wird. Ich weiß, dass das Software Center ein Frontend dafür ist, aptbin 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.

verwandte Informationen