Frage Wie bekomme ich die Geschichte von "apt-get install" auf Ubuntu?


Ich bin dabei, einen Server von einer Ubuntu-Box zur anderen zu bewegen. Ich klemme die alte Box nicht auf die neue; Ich erstelle ein neues System und verschiebe Daten nach Bedarf. Ich möchte die gesamte Software, die ich auf der alten Box habe, auf der neuen installieren.

Gibt es eine einfache Möglichkeit, den Verlauf aller "sudo apt-get install" -Befehle zu finden, die ich im Laufe der Zeit gegeben habe? Das heißt, dpkg -l zeigt mir alle Pakete an, die installiert wurden, aber nicht, welches Paket der obersten Ebene sie installiert hat. Wenn es für dpkg eine Möglichkeit gibt, mir das Installationspaket zu geben, kann ich dort die eindeutigen finden; Ansonsten möchte ich etwas anderes sagen "Sie haben diese 24 Pakete installiert".


71
2017-08-28 00:14


Ursprung


Aha! es wurde schon einmal gefragt und hat eine gute Antwort. - Gilles
Können Sie eine Antwort unten akzeptieren? Um Menschen zu danken, die geantwortet haben. - m-ric
Mögliches Duplikat von Wie man eine Liste aller Root / Main Installierte Pakete auf Debian bekommt - Rob Moir
Diese Lösungen überprüfen nur, was nach der letzten Log-Rotation passiert ist. Sie überprüfen nicht die gesamte Historie. - Kraang Prime


Antworten:


Das apt Geschichte ist in /var/log/apt/history.log wie in einem Kommentar oben gesagt. Allerdings werden dabei keine Pakete aufgelistet, die manuell mit installiert wurden dpkg oder GUIs wie gdebi. Um alle Pakete zu sehen, die durchlaufen wurden dpkg, können Sie sehen /var/log/dpkg.log.


59
2017-08-28 08:53





http://www.debianadmin.com/clone-your-ubuntu-installation.html

und /var/adm/apt/history.log


6
2017-08-28 00:31



Die Prozedur in der ersten Verknüpfung unterscheidet nicht zwischen automatisch installierten Paketen und manuell installierten Paketen. /var/log/apt/history.log (Sie haben den Standort falsch btw) wird nach ein paar Monaten weg gedreht haben. - Gilles
Gilles ist in beiden Punkten richtig. Ich habe nur ungefähr einen Monat dieser Logs, und ich kann nicht einmal sehen, wie die Log-Löschrate gesetzt ist (es wurde mit 'newsyslog' auf FreeBSD gemacht). Ich habe also immer noch keine Lösung, aber ich habe ein paar Hinweise. Ich kann wenigstens die Ausgabe von dem Befehl in dem Klonartikel grep, suche nach "high-level" Namen, installiere sie auf dem neuen, mache dasselbe auf der neuen Box, vergleiche die zwei Ergebnisse und wiederhole, bis sie zufrieden sind. Ich hätte noch mehr Ideen zu hören. - Paul Hoffman


Sie können Pakete auflisten, deren Installation explizit angefordert wurde apt-mark.

apt-mark showmanual

Falls Sie eine alte Version von Debian laufen haben, hier ist ein manueller Weg.

Der folgende Befehl gibt die Liste der Pakete an, deren Installation angefordert wurde, entweder manuell oder automatisch. Sofern Sie sich nicht gerade dabei befinden, Pakete zu installieren, ist dies die Liste der installierten Pakete.

dpkg --get-selections | sed -n 's/\t\+install$//p'

Der folgende Befehl gibt eine Obermenge von automatisch installierten Paketen:

</var/lib/apt/extended_states awk -v RS= '/\nAuto-Installed: *1/{print$2}'

Der folgende Befehl listet alle manuell installierten Pakete auf:

comm -23 <(dpkg --get-selections | sed -n 's/\t\+install$//p') \
         <(</var/lib/apt/extended_states \
           awk -v RS= '/\nAuto-Installed: *1/{print$2}' |sort)

4
2017-08-28 08:11



--- sehr unterschiedliches Ergebnis von comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u) - Cbhihe
Auf Debian gibt es apt-mark showmanual Das entspricht Ihrem letzten Befehl. - maxschlepzig


grep -i "Commandline" /var/log/apt/history.log

Zeigt alle installierten Pakete unter Verwendung von: sudo apt-get install xxxxx


1
2018-04-01 22:47



Dies unterscheidet sich nicht ausreichend von @ ℝaphinks Antwort und sollte ein Kommentar dazu sein. - Karl Richter


Anstelle der tac / head-Kombination ist es besser, tail zu verwenden (für die letzten 25 Zeilen):

tail -n 25 /var/log/apt/history.log

0
2017-10-21 16:47



Dies unterscheidet sich nicht ausreichend von @ ℝaphinks Antwort und sollte ein Kommentar dazu sein. - Karl Richter
Es ist auch nicht dasselbe. tail listet die letzten Zeilen in der Datei in der Reihenfolge auf, in der sie sich in der Datei befinden. tac kehrt die Reihenfolge um, so dass die letzte Zeile jetzt zuerst, die zweite vorletzte Zeile usw. ist. Auch scheint es, als ob Sie etwas falsch einschätzen, wenn Sie etwas "besser" sagen, ohne zu erklären warum. Ich meine, "besser" nach wem? Für welche Anforderung? Scheint irgendwie zu selbstbewusst. - Todd Walton


Um die Liste der zuletzt installierten Pakete in absteigender Reihenfolge zu erhalten, verwende ich gerne (z. B. 25 Zeilen):

tac /var/log/apt/history.log |head --lines=25

-1
2017-08-21 10:56



Effizienter (und alliterativer) wäre: tail -25 /var/log/apt/history.log | tac - agc
Dies unterscheidet sich nicht ausreichend von @ ℝaphinks Antwort und sollte ein Kommentar dazu sein. - Karl Richter