Contact me sending an e-mail (antispam defense activated) |
Title: Pkgs - Elenco dei pacchetti Author: Sandro Tosi Last modified: 2007-06-14 Elencare tutti (o quasi) i pacchetti ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Per ottenere la lista dei pacchetti il comando da usare e` (in realta` si tratta di una chiamata a dpkg-query): $ dpkg -l [package_name regex] opzionalmente, e` possibile fornire il nome del pacchetto da ricercare, anche contenente wildcard; per esempio, verificate la differenza tra $ dpkg -l gcc e $ dpkg -l gcc* Come riferimento, la manpage riporta: dpkg -l | --list package-name-pattern ... List packages matching given pattern. If no package-name-pattern is given, list all packages in /var/lib/dpkg/available. Normal shell wildchars are allowed in package-name-pattern. (You will probably have to quote package-name-pattern to prevent the shell from performing filename expansion. For example, dpkg -l 'libc5*' will list all the package names starting with "libc5".) La lista puo` essere lunga, meglio quindi paginarla: $ dpkg -l | less Una migliore visualizzazione la otteniamo sfruttando la variabile d'ambiente di dpkg COLUMNS: $ COLUMNS=120 dpkg -l che ``allarga'' l'output di dpkg per coprire il numero di colonne specificate in quella variabile. Le prime righe di output del comando, ritornano una breve legenda per aiutare la lettura delle righe successive: Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-==============================-========================-=================== La prima colonna indica lo stato ``desiderato'' di installazione del pacchetto; la seconda colonna, invece, indica lo stato reale di installazione; la terza colonna indica il tipo dell'errore, se presente; le altre colonne rappresentano, rispettivamente, il nome, la versione e la descrizione del pacchetto. Le lettere che troveremo affianco ad un pacchetto (in minuscolo) sono quelle scritte, in maiuscolo, nella legenda. Quindi, per un pacchetto installato correttamente, avremo `ii' nelle prime due colonne, mentre per un pacchetto rimosso ma con i file di configurazione ancora presenti (pacchetto rimosso ma non purgato) avremo `rc'; infine, per un pacchetto mai installato, avremo `un'. Altri modi per ottenere la lista di tutti i pacchetti sono tramite apt-cache: $ apt-cache pkgnames o $ apt-cache search "" Per i piu` smaliziati, e` possibile ottenere la lista dei pacchetti (insieme a molto altro) guardando i file /var/lib/dpkg/available e /var/lib/dpkg/status. Elencare (solo) i pacchetti installati ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sfruttando il comando dpkg -l possiamo ottenere la lista dei pacchetti installati (o installati parzialmente): $ dpkg -l | grep -E '^?i' Esiste anche un altro comando con questo scopo: $ dpkg --get-selections [package-name-pattern...] per il quale la manpage riporta dpkg --get-selections [package-name-pattern...] Get list of package selections, and write it to stdout. Without a pattern, packages marked with state purge will not be shown. Spesso viene utilizzato in unione a $ dpkg --set-selections la cui descrizione nella manpage e`: dpkg --set-selections Set package selections using file read from stdin. This file should be in the format '<package> <state>', where state is one of install, hold, deinstall or purge. Blank lines and comment lines beginning with '#' are also permitted. Il tipico esempio di utilizzo e` la necessita` di installare gli stessi pacchetti tra due macchine, dove una e` quella che vogliamo duplicare, magari sopra un'altra appena installata; allora quello che faremo e`: sorgente$ dpkg --get-selections > pkg.txt destinazione$ dpkg --set-selections < pkg.txt destinazione$apt-get dselect-upgrade quest'ultimo comando e` necessario per installare i pacchetti selezionati tramite il comando precedente. Bisogna prestare molta attenzione alla lista generata tramite 'dpkg --get-selections' in quanto questo comando riporta i pacchetti selezionati per l'install e non la situazione ``dell'installato'', anche se quasi sempre i due elenchi coincidono. Questo puo` succedere, per esempio, quando dselect propone di installare n pacchetti, ma non si preme ``install''; 'dpkg --get-selections' riportera` anche quegli n pacchetti, sebbene non siano installati realmente. 'dpkg --get-selections' dice quali pacchetti sono da ``installare'' (e verosimilmente installati), non il contrario. La selezione dei pacchetti e l'installazione (a buon fine, ulteriore step), degli stessi, sono momenti diversi. |