Das Software Center zeigt irgendwie eine ziemlich kurze Liste der installierten Pakete. Wie bekomme ich es in eine 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 Pakete, die ich ohne Abhängigkeiten ausgewählt habe, um sie zu überprüfen.
AKTUALISIEREN
Vielen Dank an @kos, ich habe endlich die Liste 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
Antworten:
Dies beantwortet die Frage nicht genau: Es gibt vielmehr einen Befehl zum Auflisten aller
apt-get install
jemals ausgeführten Befehle sowie einige Hinweise zum weiteren Parsen der Liste, um eine Liste allerapt-get install
jemals ausgeführten Befehle mit Ausnahme der von Ubiquity ausgeführten Befehle zu erhalten. da scheint die perfekte lösung für diese aufgabe nicht zu existieren.zcat /var/log/apt/history.log.*.gz
: dekomprimiert alle komprimiertenapt
Anmeldungen/var/log/apt
, verkettet sie und druckt aufstdout
;cat - /var/log/apt/history.log
: anhängt/var/log/apt/history.log
und druckt anstdout
;grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*'
: wählt nur die Zeilen aus,Commandline: apt-get
dieinstall
mit einem führenden und einem nachfolgenden Leerzeichen beginnen, und druckt den Rest jeder ausgewählten Zeile aufstdout
;Dadurch wird die Liste aller
apt-get install
jemals ausgeführten Befehle ausgegeben (die einzige nicht berücksichtigte Ausgabe könnte einapt-get
-non-install
Befehl sein, der eininstall
Paket erwähnt, aber dieses Paket existiert (noch?) Zumindest in den Standard-Repositorys nicht).Hinweis: In meiner Installation (Ubuntu 15.04 64-Bit) sind die ersten vier aufgeführten Befehle diejenigen, die von Ubiquity während der Installation ausgeführt werden. Um diese auszuschließen, können Sie die Ausgabe an
sed
folgende Adresse weiterleiten :Damit wäre der letzte ungefähre Befehl für Ubuntu 15.04 64-Bit:
quelle
Sie erhalten eine Liste aller manuell installierten Pakete ohne Abhängigkeiten. Wichtig ist, dass auch angezeigt wird, welche Pakete während des Ubuntu-Setups installiert wurden.
So schreiben Sie die Ausgabe in eine Datei:
Es gibt tatsächlich viele andere Möglichkeiten, beispielsweise die Verwendung dieses Befehls
Obwohl ich absolut keine Ahnung habe, wie das oben funktioniert;)
So zeigen Sie die nach Datum installierten Pakete an:
Pakete nach Datum Verwendung installierten
cat /var/log/dpkg.log | grep "\ install\ > somefile"
Pakete installiert mit
dpkg
Einsatzls -l /var/log/dpkg* > somefile
- dies ist wahrscheinlich das, was Sie suchen.So zeigen Sie mit dpkg installierte Pakete an:
Diese Datei enthält die oben genannten Informationen:
/var/log/dpkg.log
quelle
initial-status.gz
:-)Dies ist tatsächlich komplizierter als es scheint, und es gibt einige ähnliche Fragen zu Ask Ubuntu.
Ich habe festgestellt, dass beim Betrachten
/var/log/apt/history.log
und in den älteren Versionen dieses Protokolls alle von einemapt-get install
Befehl installierten Elemente als von diesem Befehl installiert aufgeführt werden.Damit:
Zeigt Ihnen alle für den Zeitraum an, den das aktuelle Apt-Verlaufsprotokoll abdeckt. Sie müssen
gunzip
Ihre älteren Protokolle aufrufen und diese abrufen, um alle Ihre Informationen zusammen zu erhalten. Die grep-Befehle könnten alle in eine Textdatei umgeleitet werden, um Ihnen eine schöne Liste zu geben.Dies ist wahrscheinlich nur dann nützlich, wenn Software Center
apt-get install
bei der Installation verwendet. Ich weiß, dass Software Center ein Frontend ist, bin mirapt
aber nicht sicher, ob es diesen Befehl explizit verwendet.quelle
Hier ist ein Ruby-Skript, das mit rdepends überprüft, ob ein Paket eine Abhängigkeit für ein anderes installiertes Paket darstellt. Das sagt nicht genau, was Sie ausgewählt haben, aber das hängt nicht von Ihren Protokolldateien ab (die möglicherweise gedreht wurden).
Durch das Installieren von Paketen, die als Root-Pakete aufgeführt sind, werden alle in untergeordneten Paketen aufgeführten Pakete installiert. Sie sollten also fast (siehe Nachteile unten) dieselbe Paketliste haben.
Die untergeordnete Liste zeigt die Pakete an, die Abhängigkeiten von anderen untergeordneten Paketen oder Root-Paketen sind.
Dieser Ansatz weist einige Nachteile auf:
apache2
bei Kindern Pakete aufgeführt ist , weil ich auch habenlibapache2-mod-php
,libapache2-mpm-itk
undpython-letsencrypt-apache
installiert , die habenapache2
als Abhängigkeit.libapache2-mod-php
undlibapache2-mod-php7.0
). Es gibt einen Abschnitt, in dem der wahrscheinliche Zyklus aufgeführt ist (überprüfen Sie die Paket-Vorfahren für 5 Generationen). Sie sollten ihn einschließen, um dieselbe Liste von Paketen zu erhalten (es sei denn, ich habe etwas anderes übersehen).Wenn jemand das in Bash oder Python konvertieren möchte, wäre das schön, da Ruby weniger häufig auf Servern installiert wird als Bash oder Python.
quelle