Frage Wie listet man alle installierten Pakete auf?


Ich möchte eine Liste aller installierten Pakete in eine Textdatei ausgeben, damit ich sie überprüfen und auf einem anderen System installieren kann. Wie würde ich das tun?


1576
2017-12-17 02:08


Ursprung


Dies wurde bereits beantwortet Hier. - Simon Quigley
Wow, durch die Antworten gehen scheint so viele Möglichkeiten, dies zu erreichen: / - Madivad
Wie mache ich die Masseninstallation auf einem neuen System von solch einer Textdatei? - Elysium
@Madivad diese Paketmanager sollten einmal das Leben erleichtern ... - René Nyffenegger
Ähnliche Frage an unix.stackexchange.com "Pakete nach Installationsdatum auflisten" - JamesThomasMoon1979


Antworten:


Ubuntu 14.04 und höher

Das apt Tool auf Ubuntu 14.04 und höher macht dies sehr einfach.

apt list --installed

Ältere Versionen

Um eine Liste der lokal installierten Pakete zu erhalten, tun Sie dies in Ihrem Terminal:

dpkg --get-selections | grep -v deinstall

(Das -v Tag "invertiert" grep, um nicht übereinstimmende Zeilen zurückzugeben)

Um eine Liste eines bestimmten installierten Pakets zu erhalten:

dpkg --get-selections | grep postgres

So speichern Sie diese Liste in einer Textdatei namens packages auf Ihrem Desktop tun Sie dies in Ihrem Terminal:

dpkg --get-selections | grep -v deinstall > ~/Desktop/packages

Alternativ einfach verwenden

dpkg -l

(Sie müssen keinen dieser Befehle als Superuser ausführen, also nein sudo oder andere hier notwendige Varianten)


1728
2017-12-17 03:02



Dann, wenn Sie auf dem neuen Computer installieren, tun cat ~/Desktop/packages > sudo dpkg --set-selections && sudo apt-get dselect upgrade  Quelle - koanhead
Die Syntax für dpkg hat sich seit 2006 leicht geändert, da dieser Befehl für mich nicht funktioniert, @koanhead. sudo dpkg --set-selections < ~/Desktop/packages && sudo apt-get -u dselect-upgrade macht den Trick. - James
Beachten Sie, dass dies nicht verfolgt, welche Pakete explizit vom Benutzer installiert wurden und welche als Abhängigkeiten installiert wurden. Dies bedeutet, dass apt nicht in der Lage ist, beim Entfernen eines bestimmten Pakets nicht benötigte Abhängigkeiten zu entfernen, wenn Sie diese Methode verwenden, um Ihr Setup auf einem anderen Computer wiederherzustellen. - intuited
Es ist traurig und erstaunlich, dass der Kommentar von @intuited von der Community nicht besser verstanden wird. Würden die mehr "hoch bewerteten" Mitwirkenden aufhören, mehr zu denken, bevor sie den Rat geben, dass das einfache Nachladen alter Pakete auf eine neue Ubuntu-Version keine gute Idee ist (?). Mit allen dpkg-Optionen sehe ich immer noch keine, die die 'expressely' installierten Pakete von einem Benutzer herauszieht, damit diese Liste erneut geladen werden kann und ihre Abhängigkeiten installiert werden können; Ich würde es gerne wissen - bitte teilen Sie diese Informationen. Erstellen Sie in der Zwischenzeit eine Liste der Pakete, die Sie wirklich benötigen, und installieren Sie sie erneut - Ricalsin
Wir alle wissen, dass Linux Menschen ohne fotografisches Gedächtnis diskriminiert, aber im Ernst, was falsch wäre apt list installed. Eines Tages sollten wir aufhören, systematisch das Prinzip "keep simple things easy" zu verfehlen.


Um nur die Pakete zu erhalten, die ausdrücklich installiert wurden (nicht nur als Abhängigkeiten installiert), können Sie laufen

aptitude search '~i!~M'

Dies beinhaltet auch eine kurze Beschreibung, die Sie vielleicht möchten. Wenn nicht, füge auch die Option hinzu -F '%p', wie von karthick87 erwähnt.


Eine andere Option scheint zu sein, die Datei zu kopieren /var/lib/apt/extended_statesDies ist eine Textdatei-Datenbank in diesem Format:

Package: grub-common
Architecture: amd64
Auto-Installed: 0

Package: linux-headers-2.6.35-22-generic
Architecture: amd64
Auto-Installed: 1

Auto-Installed: 0 zeigt an, dass das Paket ausdrücklich installiert wurde und nicht nur eine Abhängigkeit ist.


380
2017-08-28 21:35



Dies sollte die richtige Antwort sein. Warum Abhängigkeiten auflisten? - Stavros Korokithakis
Dies sollte Sei die Antwort, aber benutze Eignung ist wegen Multiarch ein bisschen unzuverlässig zur Zeit (Fixes auf dem Weg), leider. Noch +1, um nur explizit installierte Pakete aufzulisten und eine Möglichkeit, dies zu tun (obwohl es derzeit nicht bei 11.10+ funktioniert). - gertvdijk
@inuited "Fix Released" für Precise (vor einiger Zeit). :) - gertvdijk
Dies listet alle Pakete auf, nicht nur manuell installierte Pakete unter Ubuntu 13.10. - Eamon Nerbonne
Unter Ubuntu-15.10 muss zuerst aptitude installiert werden z.B: sudo apt-get install aptitude - Mark Mikofski


Erstellen Sie eine Sicherungskopie der aktuell installierten Pakete:

dpkg --get-selections > list.txt

Dann (auf einem anderen System) Installationen aus dieser Liste wiederherstellen:

dpkg --clear-selections
sudo dpkg --set-selections < list.txt

Um veraltete Pakete loszuwerden:

sudo apt-get autoremove

So wie zur Sicherungszeit installiert werden (d. H. Pakete installieren, die von dpkg --set-selections):

sudo apt-get dselect-upgrade

179
2018-05-16 18:26



Toller Tipp zum Wiederherstellen auf einer anderen Maschine. +1. - Drew Noakes
migriert zwischen 2 verschiedenen ubuntu 12.04 maschinen bricht dieser ansatz mein system. Es dauerte eine Weile, bis ich das irgendwie begriff ubuntu-desktop wurde deinstalliert - wahrscheinlich aufgrund eines der dpkg-Befehle. sei vorsichtig, es hat Stunden gedauert, den Schaden zu reparieren! - Karl Frisk
Und manchmal aktualisiert das System eine App, von der Sie möchten, dass das System sie überhaupt nicht berührt, und feuern Sie diese am Ende der Befehle ab sudo apt-mark hold name-your-package  . Dadurch wird verhindert, dass apt-get auf die aktuelle Version aktualisiert, die standardmäßig für den Aktualisierungsprozess verwendet wird. - Faron


Um alle Pakete aufzulisten absichtlich installiert (nicht als Abhängigkeiten) durch apt-Befehle, führen Sie Folgendes aus:

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep '^Commandline:'

Dies bietet eine umgekehrte zeitbasierte Ansicht, wobei ältere Befehle zuerst aufgelistet werden:

Commandline: apt-get install k3b
Commandline: apt-get install jhead
...

Installationsdaten zeigen auch synaptische Verwendung, aber ohne Details (das gleiche mit dem Installationsdatum):

(zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null |
  egrep '^(Start-Date:|Commandline:)' |
  grep -v aptdaemon |
  egrep -B1 '^Commandline:'

Bereitstellung der folgenden:

Start-Date: 2012-09-23  14:02:14
Commandline: apt-get install gparted
Start-Date: 2012-09-23  15:02:51
Commandline: apt-get install sysstat
...

174
2018-02-02 10:39



Oder (mit zgrep und Entfernen von Update-Nachrichten): zgrep -hE '^(Start-Date:|Commandline:)' $(ls -tr /var/log/apt/history.log*.gz ) | egrep -v 'aptdaemon|upgrade' | egrep -B1 '^Commandline:' - belacqua
Verpasst dieser Ansatz Pakete, die mit installiert wurden? dpkg?? - drevicko
Während die obigen einfachen Antworten für den allgemeinen Benutzer gut sind. Diese Methode ist bei weitem die beste Methode, um alle Anpassungen an den Computer rückgängig zu machen, da sie auch anzeigt, was aus dem Basisimage entfernt oder hinzugefügt wurde, da sie in der Sequenz aufgeführt werden, in der sie ausgeführt wurden die richtige Reihenfolge, um sie in einem anderen System hinzuzufügen. - AllGamer
@drevicko Sie sind richtig, es zeigt keine Pakete, die mit dpkg installiert sind - Steve Buzonas
Das ist ziemlich praktisch, um organisiert zu bleiben - mein Gehirn bevorzugt es aus irgendeinem Grund so. - JeremyFelix


apt-mark showmanual

man pages state:

druckt eine Liste manuell installierter Pakete

Es sollte also nur eine Liste explizit installierter Pakete enthalten (obwohl dies Pakete enthält, die Teil der Standard-Erstinstallation waren), ohne dass alle Abhängigkeiten aufgrund der Installation dieser Pakete enthalten sind.

Um das Ergebnis in eine Textdatei auszugeben:

apt-mark showmanual >list-installed.txt

60
2017-07-10 13:43



Auf Debian "apt-mark showmanual" funktionierte nicht auf "squeeze", sondern arbeitete an "Wheezy" - Wadih M.
Wie bei den meisten anderen Antworten, apt-mark showmanual nicht wirklich. Es listet auch Tonnen von automatisch installierten Paketen auf, wahrscheinlich Teil der Basisinstallation. - mivk
Nun, die Frage war für installierte Pakete und dies gibt alle installierten Pakete abzüglich der automatisch installierten Abhängigkeiten. Es enthält die ursprünglichen Pakete als Teil der Erstinstallation. Ich nehme an, Sie könnten dies bei einer neuen Installation ausführen, um eine Liste der Standardinstallationen zu erhalten, und dann davon subtrahieren, um den Unterschied zu sehen. - Tim Tisdall


dpkg-query (Anstatt von dpkg --get-selections, die einige Pakete auflistet, die nicht installiert sind) wie folgt:

dpkg-query -W -f='${PackageSpec} ${Status}\n' | grep installed |  sort -u | cut -f1 -d \ > installed-pkgs

Oder:

dpkg -l | grep ^ii | sed 's_  _\t_g' | cut -f 2 > installed-pkgs

38
2018-05-16 18:40



Typisierung # for pkg in `cat installed-pkgs`; do apt-get install -y $pkg; done Im zweiten System habe ich das so gemacht, dass es Pakete installiert. - xyz
@julianromera: apt-get install -y $(< installed-pkgs) macht es so, dass apt-get nur einmal läuft und sich um alle Abhängigkeiten kümmert. - jamadagni
@julianromera ... korrigiere mich, wenn ich mich irre, aber eine App mit Abhängigkeiten zu bauen, bevor die Installation normalerweise wäre sudo apt-get build-dep name-package; sudo apt-get install name-package;  ? - Faron


Um alle installierten Pakete aufzulisten,

dpkg -l |awk '/^[hi]i/{print $2}' > 1.txt

oder

aptitude search -F '%p' '~i' > 1.txt

oder

dpkg --get-selections > 1.txt

Hinweis:
Sie erhalten die Ergebnisdatei 1.txt in Ihrem Benutzerordner oder Sie können Ihren eigenen Pfad angeben.


36
2017-12-17 03:35





Sie können Synaptic verwenden, um den aktuellen Status Ihres installierten Pakets zu speichern. Wählen Sie in Synaptic "file / save markings", geben Sie den Namen der Datei ein, in der der Status gespeichert werden soll, und vergewissern Sie sich, dass das Kontrollkästchen "Voller Status, nicht nur Änderungen" aktiviert ist.

Die Datei, die von dieser Datei gespeichert wird, kann über Synaptic mit "file / read markings" in eine neue Maschine geladen werden.


33
2017-12-17 04:46





Ich empfehle die Verwendung Entwurf. Obwohl es für Server konzipiert ist, kann es auch von Desktops aus verwendet werden. Es erstellt ein Shell-Skript / einen Koch / eine Puppe, die Sie verwenden können, um alle Ihre Pakete neu zu installieren.


32
2018-04-12 12:26



Ich versuche nicht einen kompletten Spiegel, aber nur die Tatsache, dass man Konfigurationsdateien berücksichtigt, ist großartig. Ich habe schon lange nach einem solchen Tool gesucht, vielen Dank! - tbolender


Du willst die Pakete jetzt dort am 12.04 neu installieren, oder?

Wenn ja, ist es sehr einfach. Sie benötigen einen "Ubuntu Single Sign On Account". (Erstellen Sie es vor der Neuinstallation, damit Ihr System synchronisiert wird.)

  1. Gehen Sie zum Software-Center und suchen Sie im Menü "Datei" nach der Option "Sync zwischen Computern ...".

  2. Wenn Sie darauf klicken, sehen Sie Ihren Computer registriert und eine Liste aller Anwendungen auf Ihrem Computer.

  3. Wenn Sie neu installieren, wird dieser Computer als neuer Computer betrachtet.

  4. Sie müssen sich nur bei Ihrem Ubuntu-Konto anmelden und Ihr vorheriger Computer wird angezeigt.

  5. Klick es an; Sie erhalten eine Liste aller Apps. Wählen Sie "Installieren" in der App, die Sie installieren möchten.


31
2018-05-16 18:26



Ich habe den gleichen Namen für meinen Computer bei einer Neuinstallation festgelegt, um zu verhindern, dass jedes Mal sehr viel von dem Ubuntu One Server heruntergeladen wird. Denkst du, dass das für mich funktioniert? - AliNâ