Wie finde ich heraus, welche Pakete seit der Installation des Betriebssystems installiert wurden ? Ich möchte nicht alle installierten Pakete kennen, nur diejenigen, die nicht Teil der anfänglichen Betriebssysteminstallation waren und anschließend explizit installiert wurden.
Nehmen wir für diese Frage eine Neuinstallation an, da ich mir vorstelle, dass Distribution-Upgrades die Sache komplizieren würden. Ich würde lieber die Befehlszeile verwenden, aber eine GUI-Lösung wäre in Ordnung, wenn ein Befehl oder ein Skript nicht verfügbar ist.
Ich habe mir die Manpages von dpkg
und kurz angesehen aptitude
, aber nichts Offensichtliches gesehen. Außerdem gibt die Ausgabe von apt-cache show package-name
oder dpkg -s pkg-name
scheint keine Daten anzugeben, die mit dem Datum der Betriebssysteminstallation verglichen werden können (was ich auch herausfinden müsste, wie man es bekommt).
Ich habe logwatch
auf einem Server, der täglich Benachrichtigungen darüber sendet, was installiert wurde. Ich vermute, dass es dpkg.log analysiert. Ich bin mir nicht sicher, ob diese Methode eine Lösung wäre, da viele der Installationseinträge möglicherweise protokolliert wurden, insbesondere auf älteren Systemen. Und idealerweise sollte dies für jedes System, jeden Desktop oder jeden Server funktionieren.
Es wäre auch großartig, wenn die Ausgabe die Version des aktuell installierten Pakets enthalten könnte, aber das könnte zu viel verlangen, und ich kann es später immer noch skripten, sobald ich die Paketnamen habe.
quelle
dpkg --get-selections | grep -v deinstall
Befehl Pakete wie xorg und wget aus, die Teil der Erstinstallation gewesen wären. Ich werde die Frage bearbeiten.diff
Zwischenausgabedpgk --get-selections
und diese Datei werden etwas tun, wonach Sie suchenAntworten:
Alle Ubuntu ISO ([UKLX] Buntu / Ubuntu-Gnome) werden mit einer
.manifest
Datei geliefert , die die Liste aller vorinstallierten Pakete in der ISO enthält. Sie finden diese Manifestdateien im selben Download-Verzeichnis wie diese ISO-Dateien auf allen Ubuntu-ISO-Spiegeln. Nehmen Sie als Beispiel die Liste der verfügbaren Ubuntu-Versionen . Wenn Sie beispielsweise überTrusty
64-Bit verfügen, lautet der Manifest-Link http://releases.ubuntu.com/trusty/ubuntu-14.04.2-desktop-amd64.manifest .Wenn Sie diese Datei haben, vergleichen Sie einfach die darin enthaltene Paketliste mit der Liste aller in Ihrem Ubuntu installierten Pakete mit dem
comm
BefehlUm zu erklären, was das
comm
macht, werden Eingaben aus 2 Dateien vorgenommen - die erste liefert die Liste aller derzeit installierten Pakete und die zweite die Manifestdatei. Das-3
opt unterdrückt Zeilen, die beide Dateien haben, und-2
unterdrückt Zeilen, die nur die zweite Datei (dh die Manifestdatei) hat. Am Ende enthält Ihre Ausgabe also nur Zeilen, die nur eine Datei enthält, und die Ihnen Pakete enthält, die Sie seit der Installation des Betriebssystems manuell installiert haben.Da haben Sie es also.
Bearbeiten
Wenn Sie auch die Paketversion neben dem Paketnamen in der Ausgabe sehen möchten, wie Slyvain Pineau betont hat, leiten Sie den
comm
obigen Befehl an,xargs dpkg-query -W -f='${binary:Package} ${Version}\n'
damit er wirdOder alternativ mit
awk
vollständig. Auch dies ergibt das gleiche Ergebnis wie der obige BefehlUnter diesem Link finden Sie Erklärungen zur Funktionsweise von awk cmd
quelle
[...] | xargs dpkg-query -W -f='${binary:Package} ${Version}\n'
. Fühlen Sie sich frei, Ihre Antwort mit dem Versionszusatz zu bearbeiten :)Die Abfragemethoden initial-status.gz und dpkg von https://unix.stackexchange.com/a/80520/9132 bieten die genaueste und präziseste Liste für meine Anforderungen.
Warum ich es mag und nicht die anderen:
Die Manifest-Vergleichsmethode aus Flints Antwort und aus https://unix.stackexchange.com/a/3624/9132 enthält viele Abhängigkeiten und andere Pakete, die möglicherweise als "erforderlich" gekennzeichnet und automatisch installiert werden. Beispielsweise werden libvlc5- und vlc-Daten aufgelistet , während bei der obigen Methode nur vlc aufgelistet wird .
Die history.log- Methode von https://askubuntu.com/a/250530/16741 listet nicht alle Pakete auf, wenn die Protokolle nicht bis zur Installation der Version zurückreichen. Es enthält auch viele Upgrade- Befehle, die herausgefiltert werden müssten.
Die Methode dpkg --get-selections , eine akzeptierte Antwort auf eine ähnliche Frage, listet alle Pakete und Abhängigkeiten auf, einschließlich der mit der Version installierten. Es werden nicht nur die explizit installierten aufgelistet.
quelle
Vielen Dank und herzlichen Glückwunsch an diejenigen, die sich dieses Juwel eines Drehbuchs ausgedacht haben !!!
Ich wollte meine 2 ¢ hinzufügen und habe das Installationsdatum angeheftet, das ich aus $ info abgeleitet habe.
Ich habe die Details nicht gemeistert, warum $ info-Dateien aktualisiert werden oder nicht und wann, aber es funktioniert in der Praxis.
Mein Skript listet die neuesten Updates von Nicht-Abhängigkeitspaketen auf, die nach der Installation hinzugefügt wurden.
Als ich es regelmäßig überprüfte, sah ich, was ich ohne einen einzigen Fehler manuell protokolliert hätte.
Das heißt, Stapel von Paketen, die aus demselben Grund installiert wurden. Leider brechen Updates diese Reihenfolge.
Nach einem System-Upgrade hatte ich eine Liste meiner hinzugefügten Pakete, die das Upgrade nicht aktualisiert hat, gefolgt von denen, die es aktualisiert hat.
Ordentlich! Genießen.
quelle