Vorrei visualizzare un elenco di tutti i pacchetti installati in un file di testo in modo da poterlo esaminare e installare in blocco su un altro sistema. Come lo farei?
Vorrei visualizzare un elenco di tutti i pacchetti installati in un file di testo in modo da poterlo esaminare e installare in blocco su un altro sistema. Come lo farei?
Risposte:
Lo apt
strumento su Ubuntu 14.04 e versioni successive lo rende molto semplice.
apt list --installed
Per ottenere un elenco di pacchetti installati localmente, procedi nel tuo terminale:
dpkg --get-selections | grep -v deinstall
(Il -v
tag "inverte" grep per restituire righe non corrispondenti)
Per ottenere un elenco di un pacchetto specifico installato:
dpkg --get-selections | grep postgres
Per salvare l'elenco in un file di testo chiamato packages
sul desktop, eseguire questa operazione nel 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 non sudo
sono necessarie altre varianti qui)
cat ~/Desktop/packages > sudo dpkg --set-selections && sudo apt-get dselect upgrade
sudo dpkg --set-selections < ~/Desktop/packages && sudo apt-get -u dselect-upgrade
fa il trucco.
Per ottenere solo i pacchetti che sono stati espressamente installati (non solo installati come dipendenze), è possibile eseguire
aptitude search '~i!~M'
Ciò includerà anche una breve descrizione, che potresti desiderare. In caso contrario, aggiungi anche l'opzione -F '%p'
, come indicato 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 installato espressamente e non è solo una dipendenza.
apt-get
?
Per elencare tutti i pacchetti installati 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 basata sul tempo inverso, con i comandi più vecchi elencati per primi:
Commandline: apt-get install k3b
Commandline: apt-get install jhead
...
Dati di installazione che mostrano anche l'utilizzo 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
...
zgrep -hE '^(Start-Date:|Commandline:)' $(ls -tr /var/log/apt/history.log*.gz ) | egrep -v 'aptdaemon|upgrade' | egrep -B1 '^Commandline:'
dpkg
??
Crea un backup di quali pacchetti sono attualmente installati:
dpkg --get-selections > list.txt
Quindi (su un altro sistema) ripristina le installazioni da quell'elenco:
dpkg --clear-selections
sudo dpkg --set-selections < list.txt
Per sbarazzarsi di pacchetti obsoleti:
sudo apt-get autoremove
Per installare come al momento del backup (ovvero per installare i pacchetti impostati da dpkg --set-selections
):
sudo apt-get dselect-upgrade
ubuntu-desktop
stato disinstallato - probabilmente a causa di uno dei comandi dpkg. fai attenzione, mi ci sono volute ore per riparare il danno!
sudo apt-mark hold name-your-package
. Ciò impedirà a apt-get di passare alla versione corrente, che è l'impostazione predefinita per il processo di aggiornamento.
apt-mark showmanual
man page afferma:
stamperà un elenco di pacchetti installati manualmente
Quindi, dovrebbe semplicemente fornire un elenco di pacchetti installati in modo esplicito (anche se questo include pacchetti che facevano parte dell'installazione iniziale predefinita) senza tutte le dipendenze incluse a causa dell'installazione di questi pacchetti.
Per generare il risultato in un file di testo:
apt-mark showmanual > list-manually-installed.txt
apt-mark showmanual
no. Elenca anche tonnellate di pacchetti installati automaticamente, probabilmente parte dell'installazione di base.
apt list --manual-installed
.
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
# 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.
apt-get install -y $(< installed-pkgs)
farà in modo che apt-get funzioni una volta sola e si occupi di tutte le dipendenze contemporaneamente.
sudo apt-get build-dep name-package; sudo apt-get install name-package;
?
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 file 1.txt nella cartella home oppure puoi specificare il tuo percorso.
È possibile utilizzare Synaptic per salvare lo stato corrente del pacchetto installato. In Synaptic, seleziona "file / salva contrassegni", 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 "contrassegni file / lettura" in Synaptic.
Consiglio di usare il modello . Anche se è progettato per server, può essere utilizzato anche da desktop. Creerà uno script shell / chef / puppet che potrai usare per reinstallare tutti i tuoi pacchetti.
Vuoi reinstallare i pacchetti ora lì il 12.04, giusto?
Se è così, è molto semplice. Avrai bisogno di un "account Single Sign-On Ubuntu". (Crearlo prima di reinstallare in modo che il sistema sia sincronizzato.)
Vai al Software Center e cerca l'opzione "Sincronizza tra computer ..." nel menu File.
Quando fai clic su di esso, vedrai il tuo computer registrato e un elenco di tutte le app sul tuo computer.
Al termine dell'installazione, quel computer verrà considerato un nuovo computer.
Devi solo accedere al tuo account Ubuntu e verrà mostrato il tuo computer precedente.
Cliccaci sopra; otterrai un elenco di tutte le app. Seleziona "installa" sull'app che desideri installare.
C'è anche uno strumento chiamato Aptik (sia riga di comando che GUI) che può aiutarti a visualizzare un elenco di tutti i pacchetti installati, con un'opzione per selezionare / deselezionare alcuni di essi, creare un elenco di backup e quindi ripristinare lo stesso set di pacchetti in un altro sistema.
Installare:
sudo add-apt-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install aptik
Ulteriori informazioni: https://teejeetech.in/aptik/
Come si può vedere nella schermata, Aptik consente anche di eseguire il backup e il ripristino di PPA , che sarà certamente necessario per installare alcuni dei pacchetti installati.
apt-get install aptik-gtk
così
Clone APT . Questo pacchetto può essere usato per clonare / ripristinare i pacchetti su un sistema basato su apt.
- Salverà / ripristinerà i pacchetti, sources.list, keyring e stati installati automaticamente.
- Può anche salvare / ripristinare i pacchetti non più scaricabili usando dpkg-repack.
fonte:
man apt-clone
APT-Clone viene utilizzato da ubiquity
(programma di installazione di Ubuntu) per il processo di aggiornamento. È molto meglio della dpkg --get-selections
soluzione perché:
Come usare
Installare
sudo apt-get install apt-clone
Fare il backup
sudo apt-clone clone path-to/apt-clone-state-ubuntu-$(lsb_release -sr)-$(date +%F).tar.gz
Ripristinare il backup
sudo apt-clone restore path-to/apt-clone-state-ubuntu.tar.gz
Ripristina alla versione più recente:
sudo apt-clone restore-new-distro path-to/apt-clone-state-ubuntu.tar.gz $(lsb_release -sc)
Rende semplice file tar gzipped che può essere facilmente modificato e rivisto prima di ripristinare su altre macchine. Ecco un esempio della sua struttura:
/
├── etc
│ └── apt
│ ├── preferences.d
│ ├── sources.list
│ ├── sources.list.d
│ │ ├── anton_-ubuntu-dnscrypt-vivid.list
│ │ ├── maarten-baert-ubuntu-simplescreenrecorder-vivid.list
│ │ └── megasync.list
│ ├── trusted.gpg
│ └── trusted.gpg.d
│ ├── anton__ubuntu_dnscrypt.gpg
│ ├── anton__ubuntu_dnscrypt.gpg~
│ ├── maarten-baert_ubuntu_simplescreenrecorder.gpg
│ └── maarten-baert_ubuntu_simplescreenrecorder.gpg~
└── var
└── lib
└── apt-clone
├── extended_states
├── installed.pkgs
└── uname
C'è una grande spiegazione su Unix StackExchange che descrive come usare aptitude per elencare i pacchetti non installati come dipendenze e come confrontare tale elenco con l'elenco dei pacchetti predefiniti per la tua versione di Ubuntu.
Per ottenere il file manifest per le versioni desktop di 12.04 e successive, visitare questo sito , scegliere la versione e scorrere in basso le immagini del CD fino alla sezione dei file. Troverai qualcosa come "ubuntu-12.04.4-desktop-amd64 + mac.manifest" che corrisponde alla tua architettura.
Per le versioni server è necessario ottenere il file manifest dall'ISO utilizzato per installare il sistema originale. Per un VPS o un server cloud, il provider potrebbe rendere disponibili le immagini o potrebbe essere necessario contattarle.
Ecco un esempio usando il codice dal post di riferimento, insieme alle modifiche da installare sul nuovo server.
Vecchio server (codice da altri post, output salvato su file):
aptitude search '~i !~M' -F '%p' --disable-columns | sort -u > currently-installed.list
wget -qO - http://mirror.pnl.gov/releases/precise/ubuntu-12.04.3-desktop-amd64.manifest \
| cut -f1 | sort -u > default-installed.list
comm -23 currently-installed.list default-installed.list > user-installed.list
Sul nuovo server, copia il file usando scp, quindi usa sed per aggiungere 'install' a ogni riga (-i esegue un cambio in linea). Quindi è possibile utilizzare l'elenco come input per 'dpkg --set-selections' e installare i pacchetti con apt-get:
scp user@oldserver:user-installed.list .
sed -i 's/$/\tinstall/' user-installed.list
sudo dpkg --set-selections < user-installed.list
sudo apt-get dselect-upgrade
Prima di iniziare questa attività, raccomando di leggere e comprendere tutte le parti del post menzionate all'inizio, quindi consultare la guida di riferimento attitudinale per i dettagli sui modelli di ricerca.
Sono sorpreso che il apt-cache
comando progettato esattamente per questo scopo non sia stato menzionato sopra ...
apt-cache pkgnames
Per maggiori informazioni, esegui apt-cache --help
:
** apt-cache è uno strumento di basso livello utilizzato per interrogare le informazioni dai file di cache binari di APT comandi: gencaches: crea sia il pacchetto che la cache di origine showpkg - Mostra alcune informazioni generali per un singolo pacchetto showsrc - Mostra i record di origine stats: mostra alcune statistiche di base dump - Mostra l'intero file in forma concisa dumpavail - Stampa un file disponibile su stdout unmet - Mostra dipendenze non soddisfatte cerca - Cerca nell'elenco dei pacchetti uno schema regex show - Mostra un record leggibile per il pacchetto dipende - Mostra le informazioni sulla dipendenza grezza per un pacchetto rdepends - Mostra le informazioni sulla dipendenza inversa per un pacchetto pkgnames - Elenca i nomi di tutti i pacchetti nel sistema dotty - Genera grafici di pacchetti per GraphViz xvcg - Genera grafici di pacchetti per xvcg policy: mostra le impostazioni della policy Opzioni: -h Questo testo di aiuto. p =? La cache del pacchetto. -s =? La cache di origine. -q Disabilita l'indicatore di avanzamento. -i Mostra solo i deps importanti per il comando unmet. -c =? Leggi questo file di configurazione -o =? Imposta un'opzione di configurazione arbitraria, ad esempio -o dir :: cache = / tmp Vedere le pagine del manuale di apt-cache (8) e apt.conf (5) per ulteriori informazioni. **
apt --installed list
dà il miglior risultato (come suggerito nella risposta in alto sopra. Anche se apt-cache pkgnames
sembra fare il trucco a prima vista, elenca "tutti i pacchetti nel sistema" (per il testo di aiuto sopra), che include anche pacchetti che apt conosce ma in realtà non sono installati. C'è --installed
un'opzione ma sembra non funzionare con pkgnames
.
apt-cache pkgnames | wc -l
dà 55909
pacchetti (che il sistema conosce), mentre aptitude search '~i!~M' | wc -l
dà 2160
(pacchetti installati esplicitamente, senza dipendenze).
Per il riassunto completo vedere:
a metà strada attraverso la pagina:
dpkg --list
Il comando seguente elenca anche tutti i pacchetti installati,
grep ' installed ' /var/log/dpkg.log /var/log/dpkg.log.1 | awk '{print $5}' | sort -u
/var/log/dpkg.log*
per ottenere tutti i registri ruotati.
Aiuta questa wiki della community - Aggiungi soluzioni aggiornate.
Questo comando dovrebbe realizzare la creazione di un file di testo contenente i pacchetti installati:
dpkg -l | awk '{print $2}' > package_list.txt
Per completare l'installazione in blocco dei pacchetti elencati è necessario modificare "package_list.txt". Rimuovi le strane righe nella parte superiore del file usando un editor di testo. È quindi possibile utilizzare questo comando per installare i pacchetti dal file creato usando:
xargs < package_list.txt apt-get install -y
Utilizzare questo metodo solo se si desidera installare tutti i pacchetti correnti utilizzando l'elenco ( che include l'installazione automatica, ecc.).
Invia la risposta di 'apt-cache pkgnames' a un file che chiameremo semplicemente "package_list.txt". Puoi farlo con:
apt-cache pkgnames > package_list.txt
Quindi, quando si desidera installare i pacchetti da "package_list.txt", utilizzare questo comando:
xargs < package_list.txt apt-get install -y
Possiamo usare il comando apt-mark showmanual
per fornire un elenco di pacchetti che sono stati installati manualmente o inizialmente con Ubuntu. Vogliamo esportarlo in un file che chiameremo semplicemente "package-list.txt". Utilizzare questo comando per eseguire ciò:
apt-mark showmanual > package-list.txt
Il comando che useremmo per installare i pacchetti dal file "package_list.txt" è di seguito.
xargs < package_list.txt apt-get install -y
Utilità per semplificare la reinstallazione di pacchetti software dopo l'aggiornamento / la reinstallazione di distribuzioni basate su Ubuntu.
[ Launchpad | Aptik ]
Per informazioni su Aptik, prova a visitare la sua pagina ufficiale e per uno screenshot fai clic qui o visualizza la fine di questa sezione.
Installare Aptik è semplice. Segui questi passi:
Aggiungi il PPA con:
sudo add-apt-repository -y ppa:teejee2008/ppa
Aggiorna apt con il comando seguente.
sudo apt-get update
Installa Aptik usando:
sudo apt-get install aptik
apt-mark showmanual
include Bash, Unity e Xorg, tra gli altri. Dovrebbero essere lì?
Penso che sia interessante notare apt list --installed
o dpkg-query --list
effettivamente utilizzare il file chiamato /var/lib/dpkg/status
dietro dove sono raccolte tutte le informazioni sui pacchetti.
Quindi, se si desidera gestire solo l'elenco di pacchetti super esteso cat /var/lib/dpkg/status
.
Nota: non modificare il /var/lib/dpkg/status
file.
Oltre ai pacchetti APT , oggigiorno molti pacchetti GUI sono distribuiti come snap .
Se non è possibile trovare il pacchetto in apt list --installed
, provare snap list
:
$ snap list
Name Version Rev Tracking Publisher Notes
gimp 2.10.10 165 stable snapcrafters -
gnome-calculator 3.32.1 406 stable/… canonical✓ -
keepassxc 2.4.1 267 stable keepassxreboot -
...
È anche una buona idea aggiungere /snap/bin
al PERCORSO in modo da poterli avviare dal terminale (fatto automaticamente per utenti non root).
Il pacchetto dctrl-tools
fornisce lo grep-status
strumento per ottenere l'elenco dei pacchetti contrassegnati come installati sul sistema:
sudo apt install dctrl-tools
Uso:
grep-status -FStatus -sPackage -n "install ok installed"
vedi: man dctrl-tools
https://www.rosehosting.com/blog/list-all-installed-packages-with-apt-on-ubuntu/ :
1. Elencare i pacchetti software installati su Ubuntu
Per elencare i pacchetti software installati sul tuo computer puoi usare il seguente comando:
sudo apt list --installed
L'output del comando sarà molto simile al seguente, a seconda di quali pacchetti sono attualmente installati:
Listing... acl/xenial,now 2.2.52-3 amd64 [installed] adduser/xenial,xenial,now 3.113+nmu3ubuntu4 all [installed] apache2/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed] apache2-bin/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed,automatic] apache2-data/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed,automatic] apache2-doc/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed] apache2-utils/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed] apparmor/xenial-updates,now 2.10.95-0ubuntu2.5 amd64 [installed,automatic] apt/xenial-updates,now 1.2.19 amd64 [installed] apt-utils/xenial-updates,now 1.2.19 amd64 [installed] ...
2. Utilizzare il programma MENO
Per leggere facilmente l'intero output è possibile utilizzare il
less
programma.sudo apt list --installed | less
3. Utilizzare il comando GREP
Puoi cercare un pacchetto specifico attraverso l'output usando il
grep
programma.sudo apt list --installed | grep -i apache
4. Elencare tutti i pacchetti che includono Apache
L'output del comando precedente elencherà tutti i pacchetti che includono
apache
nei loro nomi.apache2/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed] apache2-bin/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed,automatic] apache2-data/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed,automatic] apache2-doc/xenial-updates,xenial-updates,xenial-security,xenial-security,now 2.4.18-2ubuntu3.1 all [installed] apache2-utils/xenial-updates,xenial-security,now 2.4.18-2ubuntu3.1 amd64 [installed] libapache2-mod-php/xenial,xenial,now 1:7.0+35ubuntu6 all [installed,automatic] libapache2-mod-php7.0/xenial-updates,now 7.0.13-0ubuntu0.16.04.1 amd64 [installed,automatic] libapache2-mod-security2/xenial,now 2.9.0-1 amd64 [installed] libapache2-modsecurity/xenial,xenial,now 2.9.0-1 all [installed]
Apt supporta modelli per abbinare i nomi dei pacchetti e le opzioni per elencare i
(--installed)
pacchetti installati , i(--upgradeable)
pacchetti aggiornabili o tutte le(--all-versions)
versioni dei pacchetti disponibili .5. Utilizzare il programma DPKG
Un'altra alternativa che puoi usare per elencare i pacchetti software installati sul tuo Ubuntu VPS è il
dpkg
comando.sudo dpkg -l
L'output del comando ti fornirà informazioni come il nome del pacchetto, la versione, l'architettura e una breve descrizione del pacchetto. Naturalmente, è possibile utilizzare
grep
nuovamente il programma per cercare un pacchetto specifico.sudo dpkg -l | grep -i apache
L'output dovrebbe essere simile al seguente:
ii apache2 2.4.18-2ubuntu3.1 amd64 Apache HTTP Server ii apache2-bin 2.4.18-2ubuntu3.1 amd64 Apache HTTP Server (modules and other binary files) ii apache2-data 2.4.18-2ubuntu3.1 all Apache HTTP Server (common files) ii apache2-doc 2.4.18-2ubuntu3.1 all Apache HTTP Server (on-site documentation) ii apache2-utils 2.4.18-2ubuntu3.1 amd64 Apache HTTP Server (utility programs for web servers) rc apache2.2-common 2.2.22-6ubuntu5.1 amd64 Apache HTTP Server common files ii libapache2-mod-php 1:7.0+35ubuntu6 all server-side, HTML-embedded scripting language (Apache 2 module) (default) rc libapache2-mod-php5 5.5.9+dfsg-1ubuntu4.16 amd64 server-side, HTML-embedded scripting language (Apache 2 module) ii libapache2-mod-php7.0 7.0.13-0ubuntu0.16.04.1 amd64 server-side, HTML-embedded scripting language (Apache 2 module) ii libapache2-mod-security2 2.9.0-1 amd64 Tighten web applications security for Apache ii libapache2-modsecurity 2.9.0-1 all Dummy transitional package ii libapr1:amd64 1.5.2-3 amd64 Apache Portable Runtime Library ii libaprutil1:amd64 1.5.4-1build1 amd64 Apache Portable Runtime Utility Library ii libaprutil1-dbd-sqlite3:amd64 1.5.4-1build1 amd64 Apache Portable Runtime Utility Library - SQLite3 Driver ii libaprutil1-ldap:amd64 1.5.4-1build1 amd64 Apache Portable Runtime Utility Library - LDAP Driver .
Con la concorrenza di questo tutorial, hai imparato con successo come elencare i pacchetti installati in Ubuntu.
Ci sono molti modi per farlo. Se stai usando CentOS come me puoi usarli: 1. yum list installed
2.rpm -qa