Domanda Come elencare tutti i pacchetti installati


Mi piacerebbe produrre un elenco di tutti i pacchetti installati in un file di testo in modo da poterlo rivedere e installare in blocco su un altro sistema. Come lo farei?


1576
2017-12-17 02:08


origine


Questo ha già avuto risposta Qui. - Simon Quigley
Wow, passando per le risposte sembra che ci siano così tanti modi per farlo: / - Madivad
Come posso eseguire l'installazione di massa su un nuovo sistema da un file di testo? - Elysium
@Madivad questi manager di pacchetti una volta dovevano semplificare la vita ... - René Nyffenegger
Domanda simile a unix.stackexchange.com "Elenco dei pacchetti per data di installazione" - JamesThomasMoon1979


risposte:


Ubuntu 14.04 e versioni successive

Il apt lo strumento su Ubuntu 14.04 e versioni successive lo rende molto semplice.

apt list --installed

Versioni precedenti

Per ottenere un elenco di pacchetti installati localmente, fai questo nel tuo terminale:

dpkg --get-selections | grep -v deinstall

(Il -v tag "inverts" grep per restituire righe non corrispondenti)

Per ottenere un elenco di un pacchetto specifico installato:

dpkg --get-selections | grep postgres

Per salvare quell'elenco in un file di testo chiamato packages sul desktop fallo nel tuo terminale:

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

In alternativa, usa semplicemente

dpkg -l

(non è necessario eseguire nessuno di questi comandi come superutente, quindi no sudo o qualsiasi altra variante necessaria qui)


1728
2017-12-17 03:02



Quindi, quando si installa sul nuovo computer, fare cat ~/Desktop/packages > sudo dpkg --set-selections && sudo apt-get dselect upgrade  fonte - koanhead
La sintassi per dpkg potrebbe essere leggermente cambiata dal 2006 perché quel comando non ha funzionato per me, @koanhead. sudo dpkg --set-selections < ~/Desktop/packages && sudo apt-get -u dselect-upgrade fa il trucco - James
Si noti che questo non tiene traccia di quali pacchetti sono stati installati esplicitamente dall'utente e che sono stati installati come dipendenze. Ciò significa che se si utilizza questo metodo per ricreare l'installazione su un altro computer, apt non sarà in grado di rimuovere le dipendenze non necessarie quando si rimuove un determinato pacchetto. - intuited
È triste e sorprendente che il commento di @intuited non sia meglio compreso dalla comunità. I contributori più "valutati" smetterebbero di pensare di più prima di dare il consiglio che ricaricare semplicemente vecchi pacchetti su una nuova versione di Ubuntu non è una buona idea (?). Con tutte le opzioni di dpkg ancora non ne vedo uno che estrae i pacchetti "espressamente" installati da un utente in modo che quell'elenco possa essere ricaricato e possa avere le sue dipendenze installate; Mi piacerebbe saperlo - per favore condividi queste informazioni. Nel frattempo, fai una lista dei pacchetti di cui hai veramente bisogno su una reinstallazione ed eseguila - Ricalsin
Sappiamo tutti che Linux discrimina le persone senza memoria fotografica, ma seriamente, cosa sarebbe sbagliato apt list installed. Un giorno dovremmo smettere sistematicamente di fallire il principio "mantieni le cose semplici".


Per ottenere solo i pacchetti che sono stati espressamente installati (non solo installati come dipendenze), è possibile eseguire

aptitude search '~i!~M'

Questo includerà anche una breve descrizione, che potresti volere. In caso contrario, aggiungere anche l'opzione -F '%p', come accennato da karthick87.


Un'altra opzione sembra essere quella di copiare il file /var/lib/apt/extended_states, che è un database di file di testo in questo formato:

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

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

Auto-Installed: 0 indica che il pacchetto è stato espressamente installato e non è solo una dipendenza.


380
2017-08-28 21:35



Questa dovrebbe essere la risposta corretta. Perché elencare le dipendenze? - Stavros Korokithakis
Questo dovrebbero essere la risposta, ma usando attitudine è un po 'inaffidabile a causa di Multiarch attualmente (corre sulla strada), sfortunatamente. Ancora +1 per indicare solo l'elenco dei pacchetti installati in modo esplicito e un modo per farlo (nonostante non funzioni attualmente su 11.10+). - gertvdijk
@intuited "Fix Released" per Precise (qualche tempo fa). :) - gertvdijk
Elenca tutti i pacchetti, non solo i pacchetti installati manualmente su Ubuntu 13.10. - Eamon Nerbonne
su Ubuntu-15.10, è necessario prima installare aptitude per esempio: sudo apt-get install aptitude - Mark Mikofski


Creare un backup di quali pacchetti sono attualmente installati:

dpkg --get-selections > list.txt

Quindi (su un altro sistema) ripristinare le installazioni da quella lista:

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

Per sbarazzarsi dei pacchetti stantii:

sudo apt-get autoremove

Per essere installato come al momento del backup (vale a dire installare i pacchetti impostati da dpkg --set-selections):

sudo apt-get dselect-upgrade

179
2018-05-16 18:26



Ottimo suggerimento sul ripristino su un'altra macchina. +1. - Drew Noakes
migrando tra 2 diverse macchine ubuntu 12.04 questo approccio ha rotto il mio sistema. ci è voluto un po 'fino a quando ho capito che in qualche modo ubuntu-desktop è stato disinstallato, probabilmente a causa di uno dei comandi dpkg. stai attento, mi ci sono volute ore per riparare il danno! - Karl Frisk
E a volte il sistema aggiorna un'app che desideri specificamente che il sistema non lo tocchi mai, attivalo alla fine dei comandi sudo apt-mark hold name-your-package  . Ciò impedirà apt-get dall'aggiornamento alla versione corrente che è l'impostazione predefinita per il processo di aggiornamento. - Faron


Per elencare tutti i pacchetti installato intenzionalmente (non come dipendenze) dai comandi apt, eseguire quanto segue:

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

Ciò fornisce una vista temporizzata inversa, con i comandi più vecchi elencati per primi:

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

I dati di installazione mostrano anche l'uso sinaptico, ma senza dettagli (lo stesso con la data di installazione):

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

fornendo quanto segue:

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



Oppure (con zgrep e rimuovendo i messaggi di aggiornamento): zgrep -hE '^(Start-Date:|Commandline:)' $(ls -tr /var/log/apt/history.log*.gz ) | egrep -v 'aptdaemon|upgrade' | egrep -B1 '^Commandline:' - belacqua
In questo approccio mancano i pacchetti installati con dpkg?? - drevicko
Mentre le risposte semplici di cui sopra sono buone per l'utente generale. Questo metodo è di gran lunga il migliore per eseguire il backtracking di tutte le personalizzazioni eseguite sulla macchina, poiché mostra anche cosa è stato rimosso o aggiunto dall'immagine di base, in quanto le elenca nella sequenza in cui è stato eseguito e ti aiuta a ricordare quale è la sequenza corretta per aggiungerli in un altro sistema. - AllGamer
@drevicko sei corretto, non elenca i pacchetti che sono installati con dpkg - Steve Buzonas
Questo è abbastanza utile per essere organizzato - il mio cervello preferisce in questo modo per qualsiasi motivo .. - JeremyFelix


apt-mark showmanual

stato delle pagine man:

stamperà una lista di pacchetti installati manualmente

Quindi, dovrebbe solo fornire un elenco di pacchetti installati in modo esplicito (anche se questo include i pacchetti che facevano parte dell'installazione iniziale predefinita) senza tutte le dipendenze incluse a causa dell'installazione di questi pacchetti.

Per produrre il risultato in un file di testo:

apt-mark showmanual >list-installed.txt

60
2017-07-10 13:43



Su Debian "apt-mark showmanual" non ha funzionato su "squeeze" ma ha lavorato su "wheezy" - Wadih M.
Come con la maggior parte delle altre risposte, apt-mark showmanual non proprio Elenca inoltre tonnellate di pacchetti installati automaticamente, probabilmente parte dell'installazione di base. - mivk
Bene, la domanda era per i pacchetti installati e questo fornisce tutti i pacchetti installati meno le dipendenze installate automaticamente. Include i pacchetti iniziali come parte dell'installazione iniziale. Immagino che potresti eseguire questa operazione su una nuova installazione per ottenere un elenco delle installazioni predefinite e quindi sottrarre quella da questa per vedere la differenza. - Tim Tisdall


dpkg-query (invece di dpkg --get-selections, che elenca alcuni pacchetti che non sono installati) come segue:

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

O:

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 nel secondo sistema l'ho fatto in modo che installasse i pacchetti. - xyz
@julianromera: apt-get install -y $(< installed-pkgs) farà in modo che apt-get venga eseguito solo una volta e si prenda cura di tutte le dipendenze contemporaneamente. - jamadagni
@julianromera ... correggimi se sbaglio ma per costruire un'app con dipendenze prima di fare l'installazione di solito sarebbe sudo apt-get build-dep name-package; sudo apt-get install name-package;  ? - Faron


Per elencare tutti i pacchetti installati,

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

o

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

o

dpkg --get-selections > 1.txt

Nota:
Otterrai il risultato 1.txt nella tua cartella home o potrai specificare il tuo percorso.


36
2017-12-17 03:35





È possibile utilizzare Synaptic per salvare lo stato corrente del pacchetto installato. In Synaptic, seleziona "contrassegni file / salva", inserisci il nome del file in cui salvare lo stato e assicurati di selezionare la casella "Salva stato completo, non solo modifiche".

Il file salvato da questo può essere caricato in una nuova macchina usando "file / leggi marcature" in Synaptic.


33
2017-12-17 04:46





Raccomando di usare planimetria. Anche se è progettato per server, può essere utilizzato anche da desktop. Creerà uno script di shell / chef / burattino che dovrai usare per reinstallare tutti i pacchetti.


32
2018-04-12 12:26



Non sto cercando uno specchio completo, ma solo il fatto di prendere in considerazione i file di configurazione è fantastico. Stavo cercando un tale strumento per un po 'ora, grazie mille! - tbolender


Vuoi reinstallare i pacchetti ora lì in 12.04, giusto?

Se è così, è molto facile. Avrai bisogno di un "account Single Sign On di Ubuntu". (Crealo prima di reinstallarlo in modo che il tuo sistema sia sincronizzato).

  1. Vai al Software Center e cerca l'opzione "Sincronizza tra computer ..." nel menu File.

  2. Quando fai clic su di esso vedrai il tuo computer registrato e un elenco di tutte le app sul tuo computer.

  3. Quando si installa fresco, quel computer sarà considerato un nuovo computer.

  4. Devi solo accedere al tuo account Ubuntu e il tuo computer precedente verrà mostrato.

  5. Cliccaci sopra; riceverai un elenco di tutte le app. Seleziona "installa" nell'app che desideri installare.


31
2018-05-16 18:26



Ho impostato lo stesso nome per il mio computer su una nuova installazione per evitare il download da un server Ubuntu One ogni volta. Pensi che questo lavoro per me? - AliNâ