Vraag Hoe een lijst van alle geïnstalleerde pakketten te maken


Ik wil graag een lijst met alle geïnstalleerde pakketten in een tekstbestand uitvoeren, zodat ik het kan beoordelen en bulk-installeren op een ander systeem. Hoe zou ik dit doen?


1575
2017-12-17 02:08


oorsprong


Dit was al beantwoord hier. - Simon Quigley
Wauw, door de antwoorden heen gaan, er lijken zoveel manieren te zijn om dit te bereiken: / - Madivad
Hoe doe ik de bulkinstallatie op een nieuw systeem uit zo'n tekstbestand? - Elysium
@Madivad deze pakkettenbeheerders moesten het leven eens makkelijker maken ... - René Nyffenegger
Vergelijkbare vraag op unix.stackexchange.com "Lijst van pakketten op installatiedatum" - JamesThomasMoon1979


antwoorden:


Ubuntu 14.04 en hoger

De apt tool op Ubuntu 14.04 en hoger maakt dit heel gemakkelijk.

apt list --installed

Oudere versies

Om een ​​lijst met lokaal geïnstalleerde pakketten te krijgen, doet u dit in uw terminal:

dpkg --get-selections | grep -v deinstall

(De -v tag "inverts" grep om niet-overeenstemmende lijnen te retourneren)

Om een ​​lijst van een specifiek pakket geïnstalleerd te krijgen:

dpkg --get-selections | grep postgres

Om die lijst op te slaan in een tekstbestand met de naam packages op je bureaublad doe je dit in je terminal:

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

Of gebruik gewoon

dpkg -l

(je hoeft geen van deze commando's als superuser te gebruiken, dus nee sudo of andere varianten die hier nodig zijn)


1727
2017-12-17 03:02



Installeer vervolgens op de nieuwe computer cat ~/Desktop/packages > sudo dpkg --set-selections && sudo apt-get dselect upgrade  bron - koanhead
De syntaxis voor dpkg is mogelijk enigszins veranderd sinds 2006 omdat die opdracht niet voor mij werkte, @koanhead. sudo dpkg --set-selections < ~/Desktop/packages && sudo apt-get -u dselect-upgrade doet het. - James
Merk op dat dit niet bijhoudt welke pakketten expliciet door de gebruiker zijn geïnstalleerd en welke als afhankelijkheden zijn geïnstalleerd. Dit betekent dat als u deze methode gebruikt om uw installatie op een andere machine opnieuw te maken, apt niet in staat zal zijn onnodige afhankelijkheden te verwijderen wanneer u een bepaald pakket verwijdert. - intuited
Het is triest en verbazingwekkend dat de opmerking van @intuited niet beter wordt begrepen door de community. Zouden de meer "gewaardeerde" bijdragers stoppen om meer te denken voordat ze het advies geven dat het eenvoudigweg opnieuw is om oude pakketten opnieuw te laden op een nieuwe ubuntu-versie (?). Met alle dpkg opties die ik zie nog steeds niet een die trekt zich terug uit de 'zoveel woorden' geïnstalleerde pakketten door een gebruiker, zodat die lijst kan worden geladen en mag hebben zijn afhankelijkheden geïnstalleerd; Ik zou het graag willen weten - deel deze informatie alstublieft. Maak in de tussentijd een lijst met de pakketten die u echt nodig hebt bij een nieuwe installatie en voer die uit - Ricalsin
We weten allemaal dat Linux mensen discrimineert zonder fotografisch geheugen, maar serieus, wat zou er mis zijn apt list installed. Op een dag zouden we systematisch niet moeten stoppen met het principe "houd eenvoudige dingen gemakkelijk".


Om alleen de pakketten te krijgen die uitdrukkelijk zijn geïnstalleerd (niet alleen geïnstalleerd als afhankelijkheden), kunt u uitvoeren

aptitude search '~i!~M'

Dit bevat ook een korte beschrijving die u mogelijk wilt. Zo niet, voeg dan ook de optie toe -F '%p', zoals vermeld door karthick87.


Nog een andere optie lijkt te zijn om het bestand te kopiëren /var/lib/apt/extended_states, een database met tekstbestanden in dit formaat:

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

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

Auto-Installed: 0 geeft aan dat het pakket uitdrukkelijk is geïnstalleerd en niet alleen een afhankelijkheid is.


380
2017-08-28 21:35



Dit zou het juiste antwoord moeten zijn. Waarom afhankelijkheden weergeven? - Stavros Korokithakis
Deze moeten wees het antwoord, maar gebruik het aanleg is een beetje onbetrouwbaar vanwege Multiarch momenteel (oplossingen onderweg), helaas. Nog steeds een +1 voor het wijzen op alleen een lijst van expliciet geïnstalleerde pakketten en een manier om dit te doen (ondanks dat het op 11.10+ momenteel niet zal werken). - gertvdijk
@intuited "Fix Released" voor Precise (enige tijd geleden). :) - gertvdijk
Hiermee worden alle pakketten vermeld, niet alleen handmatig geïnstalleerde pakketten op Ubuntu 13.10. - Eamon Nerbonne
op Ubuntu-15.10 moet eerst aptitude worden geïnstalleerd bv: sudo apt-get install aptitude - Mark Mikofski


Maak een back-up van welke pakketten momenteel zijn geïnstalleerd:

dpkg --get-selections > list.txt

Dan (op een ander systeem) herstelt u de installaties uit die lijst:

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

Om verouderde pakketten te verwijderen:

sudo apt-get autoremove

Om te worden geïnstalleerd zoals bij back-uptijd (dat wil zeggen om pakketten te installeren die zijn ingesteld met dpkg --set-selections):

sudo apt-get dselect-upgrade

179
2018-05-16 18:26



Goede tip over het herstellen op een andere machine. 1. - Drew Noakes
het migreren tussen 2 verschillende ubuntu 12.04-machines heeft mijn aanpak gebroken. het duurde even voordat ik me dat op de een of andere manier realiseerde ubuntu-desktop werd verwijderd - waarschijnlijk als gevolg van een van de dpkg-commando's. wees voorzichtig, het kostte me uren om de schade te herstellen! - Karl Frisk
En soms werkt het systeem een ​​app bij die je specifiek wilt dat het systeem nooit aanraakt. Vang dit aan het einde van de opdrachten sudo apt-mark hold name-your-package  . Dit voorkomt dat apt-get upgradet naar de huidige versie, wat de standaard is voor het updateproces. - Faron


Om alle pakketten weer te geven opzettelijk geïnstalleerd (niet als afhankelijkheden) door apt-opdrachten, voer je het volgende uit:

(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:'

Dit levert een omgekeerde op tijd gebaseerde weergave op, waarbij oudere opdrachten als eerste worden vermeld:

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

Installatiegegevens laten ook synaptisch gebruik zien, maar zonder details (hetzelfde met installatiedatum):

(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:'

het verstrekken van het volgende:

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



Of (met zgrep en het verwijderen van updateberichten): zgrep -hE '^(Start-Date:|Commandline:)' $(ls -tr /var/log/apt/history.log*.gz ) | egrep -v 'aptdaemon|upgrade' | egrep -B1 '^Commandline:' - belacqua
Maakt deze aanpak pakketten missen geïnstalleerd met dpkg?? - drevicko
Hoewel de bovenstaande eenvoudige antwoorden goed zijn voor de algemene gebruiker. Deze methode is verreweg de beste manier om alle aanpassingen die aan de machine zijn gedaan, terug te halen, omdat ook wordt weergegeven wat er is verwijderd of toegevoegd van de basisafbeelding, terwijl het de lijst weergeeft in de volgorde waarin het is uitgevoerd en u helpt onthouden wat de juiste volgorde om ze weer in een ander systeem toe te voegen. - AllGamer
@ drevicko je hebt gelijk, het geeft geen lijst van pakketten die zijn geïnstalleerd met dpkg - Steve Buzonas
Dit is behoorlijk handig om georganiseerd te blijven-- mijn brein geeft er de voorkeur aan op deze manier, om welke reden dan ook .. - JeremyFelix


apt-mark showmanual

man pagina's staat:

zal een lijst met handmatig geïnstalleerde pakketten afdrukken

Dus, het zou alleen een lijst van expliciet geïnstalleerde pakketten moeten geven (hoewel dit ook pakketten omvat die deel uitmaakten van de standaard initiële installatie) zonder alle afhankelijkheden inbegrepen vanwege het installeren van deze pakketten.

Om het resultaat in een tekstbestand uit te voeren:

apt-mark showmanual >list-installed.txt

60
2017-07-10 13:43



Op Debian "apt-mark showmanual" werkte niet op "squeeze" maar werkte aan "wheezy" - Wadih M.
Zoals met de meeste andere antwoorden, apt-mark showmanual niet echt. Het bevat ook een lijst met tonnen automatisch geïnstalleerde pakketten, waarschijnlijk onderdeel van de basisinstallatie. - mivk
Nou, de vraag was voor geïnstalleerde pakketten en dit geeft alle geïnstalleerde pakketten minus de automatisch geïnstalleerde afhankelijkheden. Het bevat de initiële pakketten als onderdeel van de initiële installatie. Ik denk dat je dit op een nieuwe installatie zou kunnen uitvoeren om een ​​lijst met de standaard installaties te krijgen en dat dan af te trekken om het verschil te zien. - Tim Tisdall


dpkg-query (in plaats van dpkg --get-selections, dat een aantal pakketten vermeldt die niet zijn geïnstalleerd) als volgt:

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

Of:

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

38
2018-05-16 18:40



Typying # for pkg in `cat installed-pkgs`; do apt-get install -y $pkg; done in het tweede systeem heb ik dit zo gemaakt dat het pakketten zal installeren. - xyz
@julianromera: apt-get install -y $(< installed-pkgs) zal ervoor zorgen dat apt-get slechts één keer wordt uitgevoerd en zorgt voor alle afhankelijkheden tegelijk. - jamadagni
@julianromera ... corrigeer me als ik me vergis maar om een ​​app met afhankelijkheden te maken voordat de installatie normaal zou zijn sudo apt-get build-dep name-package; sudo apt-get install name-package;  ? - Faron


Om alle geïnstalleerde pakketten te tonen,

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

of

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

of

dpkg --get-selections > 1.txt

Notitie:
U krijgt het resultaat 1.txt-bestand in uw thuismap of u kunt uw eigen pad opgeven.


36
2017-12-17 03:35





U kunt Synaptic gebruiken om de huidige status van uw geïnstalleerde pakketten op te slaan. Selecteer in Synaptic "markeringen markeren / opslaan", Voer de naam in van het bestand waarin u de status wilt opslaan en zorg ervoor dat u het selectievakje "Volledige staat opslaan, niet alleen wijzigingen" aanvinkt.

Het bestand dat hieruit is opgeslagen, kan in een nieuw apparaat worden geladen met behulp van 'markeringen voor bestanden / lezen' in Synaptic.


33
2017-12-17 04:46





Ik raad aan om te gebruiken plan. Hoewel het is ontworpen voor servers, kan het ook vanaf desktops worden gebruikt. Het maakt een shell-script / chef / marionet dat je kunt gebruiken om al je pakketten opnieuw te installeren.


32
2018-04-12 12:26



Ik probeer niet een complete spiegel, maar alleen het feit van het rekening houden met configuratiebestanden is geweldig. Ik was al een tijdje op zoek naar zo'n tool, heel erg bedankt! - tbolender


U wilt de pakketten nu daar op 12.04 opnieuw installeren, toch?

Als dat zo is, is het heel gemakkelijk. U hebt een "Ubuntu Single Sign On-account" nodig. (Maak het voordat u het opnieuw installeert, zodat uw systeem gesynchroniseerd is.)

  1. Ga naar het Software Center en zoek naar de "Synchronisatie tussen computers ..." optie onder het menu Bestand.

  2. Als u erop klikt, ziet u uw computer geregistreerd en een lijst met alle apps op uw computer.

  3. Wanneer u vers installeert, wordt die computer als een nieuwe computer beschouwd.

  4. U hoeft alleen in te loggen op uw Ubuntu-account en uw vorige computer wordt getoond.

  5. Klik erop; je krijgt een lijst met alle apps. Selecteer "Installeren" in de app die u wilt installeren.


31
2018-05-16 18:26



Ik heb dezelfde naam ingesteld voor mijn computer op een nieuwe installatie om te voorkomen dat ik elke keer enorm download van de Ubuntu One-server. Denk je dat dit voor mij werkt? - AliNâ


Er is ook een tool genaamd Aptik (Zowel command line en GUI) die u kunnen helpen om een ​​lijst van alle geïnstalleerde pakketten, met een optie om te selecteren / deselecteren een aantal van hen, maak een back-up lijst en het herstel van de dezelfde set van pakketten in een ander systeem.

Installeren:

sudo add-apt-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install aptik

Verdere informatie: http://www.teejeetech.in/2014/04/aptik-v14.html

enter image description here

Zoals te zien is in de screenshot, Aptik laat jou maak ook back-ups en herstel PPA's, wat zeker nodig zal zijn om enkele geïnstalleerde pakketten te installeren.


30
2018-05-30 20:22



Als je de GUI wilt, moet je installeren apt-get install aptik-gtk ook - Maduka Jayalath