Home Page

Tips page
c
cellulari
debian

*Gestione degli init scripts
*Lilo personalizzato con immagini Debian
*Pkgs - apt e MMap ran out of room
*Pkgs - apt-get ed i Super Cow Powers
*Pkgs - apt-get e resume dei download
*Pkgs - apt-listbugs ed evitare problemi all'installazione
*Pkgs - apt-show-versions
*Pkgs - Autocompletamento dei pacchetti con apt-get
*Pkgs - Auto-installazione delle dipendenze di compilazione
*Pkgs - Cercare in quale pacchetto e` contenuto un file
*Pkgs - Cercare i pacchetti
*Pkgs - Clonare un'installazione
*Pkgs - Come installare un pacchetto
*Pkgs - Compilare pacchetti sorgenti
*Pkgs - Contenuto di un pacchetto
*Pkgs - Cosa e` un meta-pacchetto (ed un dummy package)
*Pkgs - Differenza tra upgrade e dist-upgrade
*Pkgs - Elenco dei pacchetti
*Pkgs - Eliminare i pacchetti inutilizzati
*Pkgs - File contenuti in un pacchetto installato
*Pkgs - Importare la chiave di un repository
*Pkgs - Installare un pacchetto di una certa versione
*Pkgs - Mettere in hold un pacchetto
*Pkgs - Nome di un pacchetto
*Pkgs - Pacchetti riconfigurabili
*Pkgs - Pacchetti virtuali
*Pkgs - Ricomporre un pacchetto sorgente
*Pkgs - Rimuovere i pacchetti scaricati
*Pkgs - Rimuovere pacchetti
*Pkgs - Risolvere problemi nell'installazione
*Pkgs - Scegliere il mirror migliore
*Pkgs - Upgrade e downgrade del sistema
*Pkgs - Verificare se un pacchetto e` installato

egittologia
emacs
emacs-latex
hardware
html
inglese
java
latex
linux
matlab
misc
mysql
network
octave
programming
python
security
sed
tech
webapps
windows

University Page

Programming

Debian & Linux

Some works

About me

Del.icio.us Bookmarks

BOINC Combined Statistics

Site Statistics

Contact me sending an e-mail (antispam defense activated)

debian

hacker emblem

blogger

GeoURL

View Sandro Tosi's profile on LinkedIn

This is my Google PageRank

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.