Instal·lar en Linux

De castillowiki
Saltar a: navegación, buscar

Relacionat: Sistemes operatius, Linux, Gestió de memòria, Gestió de E/S, Processos en Linux, Comandos del shell, Scripts Bash, Drivers en Linux, Configuració de la xarxa en Linux, Instal·lar en Linux

Contenido

Repositoris o Fonts de programari

Els repositoris o fonts de programari són espais centralitzats on s'emmagatzema i es mantenen paquets de programari , habitualment en bases de dades o arxius informàtics.

Les fonts de programari s'empren de forma intensiva en moltes distribucions del GNU/Linux, emmagatzemant paquets de programari disponibles per a la seva instal·lació mitjançant un gestor de paquets. Per exemple, moltes distribucions GNU/Linux utilitzen Advanced Packaging Tool (APT) o yum (yum).

Fitxer sources.list

Els repositoris es troben al fitxer de configuració:

/etc/apt/sources.list

Un exemple del contingut d'aquest fitxer pot ser:

#deb cdrom:[Ubuntu 10.04 LTS _Lucid Lynx_ - Release amd64 (20100429)]/ lucid main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.

deb http://es.archive.ubuntu.com/ubuntu/ lucid main restricted
deb-src http://es.archive.ubuntu.com/ubuntu/ lucid main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://es.archive.ubuntu.com/ubuntu/ lucid-updates main restricted
deb-src http://es.archive.ubuntu.com/ubuntu/ lucid-updates main restricted 

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://es.archive.ubuntu.com/ubuntu/ lucid universe
deb-src http://es.archive.ubuntu.com/ubuntu/ lucid universe
deb http://es.archive.ubuntu.com/ubuntu/ lucid-updates universe
deb-src http://es.archive.ubuntu.com/ubuntu/ lucid-updates universe 

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu 
## team, and may not be under a free licence. Please satisfy yourself as to 
## your rights to use the software. Also, please note that software in 
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://es.archive.ubuntu.com/ubuntu/ lucid multiverse
deb-src http://es.archive.ubuntu.com/ubuntu/ lucid multiverse
deb http://es.archive.ubuntu.com/ubuntu/ lucid-updates multiverse
deb-src http://es.archive.ubuntu.com/ubuntu/ lucid-updates multiverse 

## Uncomment the following two lines to add software from the 'backports'
## repository.
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
# deb http://es.archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse
# deb-src http://es.archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu lucid partner
# deb-src http://archive.canonical.com/ubuntu lucid partner 

deb http://security.ubuntu.com/ubuntu lucid-security main restricted
deb-src http://security.ubuntu.com/ubuntu lucid-security main restricted
deb http://security.ubuntu.com/ubuntu lucid-security universe
deb-src http://security.ubuntu.com/ubuntu lucid-security universe
deb http://security.ubuntu.com/ubuntu lucid-security multiverse
deb-src http://security.ubuntu.com/ubuntu lucid-security multiverse
 

Aquest exemple fa referència a la configuració típica en un sistema Ubuntu

Afegir un repositori al fitxer sources.list

Utilitzeu el vostre editor de text preferit per modificar el fitxer /etc/apt/sources.list.

$ sudo nano /etc/apt/sources.list

Al final del fitxer afegiu la línia de repositori. Per exemple si voleu afegir el repositori de spotify :

deb http://repository.spotify.com stable non-free

Podeu sortir i guardar el fitxer amb Ctrl+k+x. Normalment per aplicar el canvis i que el nou repositori es pugui utilitzar heu d'executar:

$ sudo apt-get update
   NOTA: Com alternativa també pode utilitzar aptitude 

La línia que cal afegir us serà proporcionada per alguna guía o per mantenidor del repositori al que us voleu connectar

Podeu afegir repositoris des de l'entorn gràfic utilitzant Synaptic.

Com afegir una clau

Per instal·lar una clau primer s'ha de descarregar d'Internet. Normalment us la proporcionarà el proveidor del repositori. Cal seguir els següents passos:

Descarregar la clau

$ wget http://www.array.org/ubuntu/array-apt-key.asc

NOTA: és pot utilitzar wget o es pot descarregar la clau des de qualsevol navegador web.

Instal·lació de la clau:

$ sudo apt-key add array-apt-key.asc

I finalment cal actualitzar gestor de paquets:

$ sudo apt-get update

Per afegir una clau directament des de un repositori públic de claus:

$ sudo apt-key add --keyserver keyserver.ubuntu.com --recv-keys AA1C92B0

On AA1C92B0 és l'identificador de la clau PGP o GPG.

apt

Apt (Advanced Packaging Tool) és una utilitat per a la gestió de paquets en sistemes debian GNU/Linux o derivats. Apt simplifica molt la feina de l'administració de paquets en sistems UNIX, per què automatitza el procés d'obtenció, instal·lació i configuració de programari. Apt és un front-end de dpkg.

Actualment ja hi ha versions modificades d'apt per treballar amb paquets rpm.

Apt és un conjunt d'eines proporcionades pel paquet apt.

Recursos:

Instal·lar paquets mitjançant URLs (links/enllaços web)

Es pot utilitzar un codi HTML com el següent:

<a href="apt:joe">Fes clic aquí per instal·lar joe</a>

Si l'usuari fa click s'executarà l'aplicació que tinguem indicada per defecte com a instal·lador de paquets (típicament Synaptic)

Hi ha pàgines web com:

Que permeten cercar i instal·lar paquets. El suport esta activat per defecte a Firefox i funciona gràcies al paquet:

apturl

Recursos:

apt-get

Segons el manual:

$ man apt-get

 apt-get - APT package handling utility -- command-line interface

És l'eina que permet gestionar paquets.

La sintaxi és

       apt-get [-sqdyfmubV] [-o= config_string ] [-c= config_file ]
               [-t= { target_release_name | target_release_number_expression | target_release_codename }] {update | upgrade | dselect-upgrade |
               dist-upgrade | install pkg [ { =pkg_version_number | /target_release_name | /target_release_codename } ] ...  | remove pkg...  |
               purge pkg...  | source pkg [ { =pkg_version_number | /target_release_name | /target_release_codename } ] ...  | build-dep pkg...  |  
              check 
              | clean | autoclean | autoremove | {-v | --version} | {-h | --help}}

Manual:

Opció update

Per actualitzar la llista de paquets coneguda pel nostre sistema, hem d'executar:

$ sudo apt-get update

apt-get treballa amb una base de dades de paquets. Aquesta base de dades és local i també es coneguda com a package cache (podeu gestionar aquesta cache amb l'ordre apt-cache). Si volem sincronitzar aquesta base de dades amb possibles canvis en els dipòsits d'Internet cal utilitzar l'ordre apt-get update.

Cada cop que fem un canvi als repositoris, o volem comprovar si tenim les últimes versions dels paquets als repositoris hem d'executar abans un update. S'ha d'executar regularment i sinó tenim paquets com l'update-manager que comprova periòdicament si tenim actualitzacions.

Opció install

Per instal·lar un paquet nou:

$ sudo apt-get install nom_del_paquet

Exemple

$ sudo apt-get install samba

Si el paquet no té depèndencies s'instal·la directament sense demanar la confirmació de l'usuari. La línia més important sempre és el resum:

0 actualitzats, 1 nous a instal·lar, 0 a eliminar i 2 no actualitzats.

Sempre cal comprovar que la instal·lació d'un paquet no es incompatible amb un o altres paquets. Si fos així, el resum indicaría quins paquets s'eliminen (son incompatibles).

Com totes les comandes d'apt-get que impliquen canvis en el sistema podem fer una simulació abans d'executar la comanda realment:

$ sudo apt-get --simulate install samba

El mode --simulate pot ser útil per:

  • Conèixer els paquets suggerits i els paquets recomanats. Els paquets suggerits són programes o paquets dels quals l'aplicació a instal·lar no depèn però que si pot ser una bona idea tenir instal·lat com a complement del paquet a instal·lar.

Altres opcions útils poden ser:

  • -d Només descarregar el paquet.
  • -f Força la instal·lació encara que falli el test d'integritat.
  • -y Respon si a totes les preguntes.

Missatges de sortida

El paquet ja esta instal·lat i no hi han actualitzacions:

$ sudo apt-get install k3b
S'està llegint la llista de paquets... Fet 
S'està construint l'arbre de dependències       
Reading state information... Fet           
k3b ja es troba en la versió més recent.
0 actualitzats, 0 nous a instal·lar, 0 a eliminar i 2 no actualitzats.

Opció remove

Per eliminar un paquet del nostre sistema utilitzem:

$ sudo apt-get remove nom_del_paquet

Exemple:

$ sudo apt-get remove samba


Si el paquet no té dependencies es borrarà directament sense demanar confirmació a l'usuari. En el cas que hi haguin dependències:

$ sudo apt-get remove k3b
S'està llegint la llista de paquets... Fet 
S'està construint l'arbre de dependències       
Reading state information... Fet           
The following packages were automatically installed and are no longer required:
  k3b-i18n k3b
Use 'apt-get autoremove' to remove them.
S'ELIMINARAN els següents paquets:
  k3b k3b-i18n
0 actualitzats, 0 nous a instal·lar, 2 a eliminar i 2 no actualitzats.
Es necessita obtenir 0B d'arxius.
Després de desempaquetar s'alliberaran 23,9MB d'espai en disc.
Voleu continuar [S/n]? 

Es demana la confimació de l'usuari. Com podeu veure a més de k3b també s'elimina k3b-i18n. Confirmem...

(S'està llegint la base de dades ... hi ha 159684 fitxers i directoris instal·lats actualment.)
S'està desinstal·lant k3b-i18n ...
S'està desinstal·lant k3b ...

Cal tenir en compte que al desinstal·lar un paquet no s'esborren els fitxers de configuració d'aquest paquet (carpetes /etc/nom_del_paquet o altres fitxers d econfiguració). Això te l'avantatge de no perdre les configuracions de l'aplicació o paquet a desinstalar. Si tornem a instal·lar el paquet desinstal·lat, veurem que es mantenen totes les nostres configuracions. Ara bé, a vegades volem borrar-ho tot absolutament (per alliberar espai o per fer una reinstal·lació completa quan teniem errors amb el paquet). Cal utilitzar el paràmetre --purge.

$ sudo apt-get --purge remove mysql-server-5.0

L'exemple anterior pot ser un cas per voler utilitzar purge. Podem voler reinstal·lar Mysql per que ens hem oblidat del password de root...

Opció autoremove

Borra paquets del sistema que ja no s'utilitzen.

$ sudo apt-get autoremove


L'opció autoremove esborra tots els paquets que es van instal·lar de forma automàtica com a dependències d'un altre paquet i que actualment ja no es necessiten (p.ex. per què el paquet es va desinstal·lar). Un exemple:

Opció upgrade

Per actualitzar el nostre sistema (tots els paquets que tenim instal·lats):

$ sudo apt-get upgrade

No s'ha de confondre amb la opció update. Update no modifica cap paquet del nostre sistema, només es baixa les capçaleres dels paquets (metainformació del paquets) per tal de comprovar si les versions dels paquets que tenim instal·lats corresponen amb les últimes versions del repositori.

Igual que amb els paràmetres install i remove, podem fer una simulació:

$ sudo apt-get --simulate upgrade

Aquesta comanda no executa cap canvi en els paquets del nostre sistema, simplement ens informa de com aniria l'execució de la comanda upgrade.

Opció dist-upgrade

Per actualitzar el sistema a una versió nova (release nova) del sistema. Ubuntu utilitza l'aplicació update-manager.

També serveix per actualitzar paquets que es troben marcats com a mantinguts:

$ sudo apt-get dist-upgrade

Opció clean

Podem alliberar espai en el nostre disc durs, executant:

$ df -h
S. fitxers            Tamany En ús Lliure %Ús Muntat en
/dev/sda2             153G   80G   66G  55% /
....
$ sudo apt-get clean
Password:
$ df -h
S. fitxers            Tamany En ús Lliure %Ús Muntat en
/dev/sda2             153G   79G   67G  55% /
......................

Com podeu veure es pot arribar a alliberar força espai. apt-get clean elimina les capçaleres descarregades dels repositoris d'Internet del nostre disc dur local. L'únic inconvenient és que aquesta informació potser l'haurem de tornar a descarregar a posteriori d'Internet.

Consulteu també hi ha l'opció #Opció autoclean.

Opció autoclean

Borra només aquells paquets que no es necessiten per a res.

$ sudo apt-get autoclean

opció source

Per tal que funcioni source, cal que tingueu línies específiques deb-src al fitxer /etc/apt/sources.list

Permet descarregar el codi font d'un paquet. Per exemple per obtenir el codi font d'eines bàsiques del sistema com ls o cp podeu obtenir el codi font del paquet coreutils:

$ sudo apt-get source coreutils 

apt-cache

Segons el manual:

$ man apt-cache

que podeu consultar a Internet a:

man apt-cache 

apt-cache és l'eina que permet manipular la memòria cau (cache) dels paquets Debian. L'ordre només serveix per proporcionar informació sobre la base de dades de paquets Debian (també coneguda com package cache).

Opció search

Per buscar paquets als quals la seva descripció contingui la paraula "word":

$ apt-cache search word

Com conèixer el path o directori en que es troba un paquet. Opció showsrc

Mostra la informació dels paquets font.

Es pot utilitzar per saber quina és l'adreça dins dels repositoris:

$ apt-cache showsrc ifupdown | grep Directory
Directory: pool/main/i/ifupdown

L'adreça URL del fitxer al repositori d'Ubuntu (mirror espanyol) és http://es.archive.ubuntu.com/ubuntu/pool/main/i/ifupdown

Opció depends

Per mostrar les dependències d'un paquet:

$ apt-cache depends nom_del_paquet

Exemple:

$ apt-cache depends ifupdown
ifupdown
  Depén: net-tools
  Depén: libc6
 |Depén: debconf
  Depén: <debconf-2.0>
    cdebconf
    debconf
  Depén: lsb-base
  Suggereix: iproute
 |Suggereix: dhcp3-client
 Suggereix: dhcp-client
   dhcpcd
   pump
   udhcpc
 Suggereix: ppp
 Reemplaça: netbase

Opció show

Per mostrar la informació detallada d'un paquet:

$ apt-cache show nom_del_paquet

Exemple:

$ apt-cache show ifupdown
Package: ifupdown
Priority: important
Section: base
Installed-Size: 248
Maintainer: Anthony Towns <ajt@debian.org>
Architecture: i386
Version: 0.6.7ubuntu7
Replaces: netbase (<< 4.00)
Depends: net-tools, libc6 (>= 2.3.4-1), debconf (>= 1.2.0) | debconf-2.0, lsb-base (>= 1.3-9ubuntu3)
Suggests: iproute, dhcp3-client | dhcp-client, ppp
Filename: pool/main/i/ifupdown/ifupdown_0.6.7ubuntu7_i386.deb
Size: 49752
MD5sum: e8ddddb4d85d24ff0dd48bf5e58388e5
SHA1: 4072c6f69221fc1a50bd95b7efca3a522c0fb9dc
SHA256: 81cf4bc3436254cf95e129cce29d160446cb74f16619af177426b65256ccbb93
Description: high level tools to configure network interfaces
 This package provides the tools ifup and ifdown which may be used to
 configure (or, respectively, deconfigure) network interfaces based on
 interface definitions in the file /etc/network/interfaces.
Bugs: mailto:ubuntu-users@lists.ubuntu.com
Origin: Ubuntu
Task: minimal

Vegeu també dpkg -p

Opció showpkg

Per mostrar informació detallada de les versions disponibles d'un paquet i els paquets que en depenen inversament:

$ apt-cache showpkg package

Exemple:

$ apt-cache showpkg ifupdown
Package: ifupdown
Versions: 
0.6.7ubuntu7 (/var/lib/apt/lists/es.archive.ubuntu.com_ubuntu_dists_edgy_main_binary-i386_Packages)    (/var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_edgy_main_binary-i386_Packages) (/var/lib/dpkg/status)
Description Language: 
               File: /var/lib/apt/lists/es.archive.ubuntu.com_ubuntu_dists_edgy_main_binary-i386_Packages
                MD5: 442edbd184a6e1febc9b203604eb38f4

Reverse Depends: 
  zeroconf,ifupdown
  resolvconf,ifupdown 0.6.4-4.1
  laptop-net,ifupdown
  ifupdown-scripts-zg2,ifupdown 0.6.4-4.5
  ifscheme,ifupdown 0.6.5
  ifplugd,ifupdown 0.6.4-4.2
  etherconf,ifupdown 0.6.4
  dhcpcd,ifupdown 0.6.4-4
  ubuntu-minimal,ifupdown
  netbase,ifupdown 0.6.4-4.9
  eagle-usb-utils,ifupdown
  bridge-utils,ifupdown 0.6.0
  bridge-utils,ifupdown
Dependencies: 
0.6.7ubuntu7 - net-tools (0 (null)) libc6 (2 2.3.4-1) debconf (18 1.2.0) debconf-2.0 (0 (null)) lsb-base (2 1.3-9ubuntu3) iproute (0 (null)) dhcp3-client   (16 (null)) dhcp-client (0 (null)) ppp (0 (null)) netbase (3 4.00) 
Provides: 
0.6.7ubuntu7 - 
Reverse Provides:

Opció stats

Amb l'opció stats podem consultar les estadístiques de la base de dades de paquets Debian (aka package cache):

$ sudo apt-cache stats
Nombre total de paquets: 37499 (1500k)
  Paquets normals: 28679
  Paquets virtuals purs: 387
  Paquets virtuals únics: 2440
  Paquets virtuals mixtes: 280
  Falten: 5713
Total de versions diferents: 29713 (1664k)
Total de descripcions diferents: 29713 (713k)
Total de dependències: 190775 (5342k)
Total de relacions versió/fitxer: 31879 (510k)
Total de relacions descripció/fitxer: 29713 (475k)
Total dels mapes aportats: 5169 (103k)
Total de cadenes globals: 155 (2013)
Total de l'espai per a dependències de versió: 896k
Total de l'espai desperdiciat: 88,4k
Total de l'espai atribuït a: 9209k

Opció pkgnames

Mostra els noms del paquets:

$ apt-cache pkgnames

el podeu utilitzar per a

$ apt-cache pkgnames | wc -l

Opció unmet

L'opció unmet mostra les dependències no cumplides del sistema

$ sudo apt-cache unmet
El paquet openoffice.org-l10n-mn versió 1:3.1.1-4ubuntu1 té una dependència sense satisfer:
Suggereix: hunspell-dictionary-mn | myspell-dictionary-mn
Suggereix: openoffice.org-hyphenation-mn
Suggereix: openoffice.org2-thesaurus-mn
Suggereix: openoffice.org-help-mn
...

apt-config

Mostra el fitxer de configuració:

$ sudo apt-config dump
APT "";
APT::Architecture "i386";
APT::Build-Essential "";
APT::Build-Essential:: "build-essential";
APT::Install-Recommends "1";
APT::Install-Suggests "0";
APT::Acquire "";
APT::Acquire::Translation "environment";
APT::Authentication "";
...

apt-mark

Permet marcar un paquet com instal·at automàticament o no. Els paquets instal·lats automàticament són aquells que s'instal·len com a dependència d'un altre paquet tot i que no s'ha indicat explícitament que es vulgui instal·lar aquell paquet concret.

La sintaxi és::

$ sudo apt-mark [-hv] [-f=FILENAME] {markauto | unmarkauto} package...  | showauto

Podeu mostrar els paquets que són automàtics amb:

$ sudo apt-mark showauto
aisleriot
...

Per desmarcar un paquet com a marcat automàticament:

$ sudo apt-mark unmarkauto nom_paquet

Per marcar un paquet com instal·lat automàticament:

$ sudo apt-mark markauto nom_paquet

Per exemple:

$ sudo apt-mark markauto aisleroot

apt-key

Consulteu #Com afegir una clau.

apt-file

És un paquet que cal instal·lar:

$ sudo apt-get install apt-file

Com esbrinar a quin paquet pertany un fitxer

$ apt-file search nom_fitxer

Com llistar els contingut d'un paquet

$ apt-file list nom_paquet

apt-file manté una base de dades amb els fitxers que contenen tots els paquets, de la mateixa manera que ho fa auto-apt i per això necessita estar actualitzada. Això s'aconsegueix executant:

$ apt-file update

apt-src

$ sudo apt-cache search apt-src
apt-src - manage Debian source packages

$ sudo apt-get install apt-src

Ara podem obtenir el codi font d'una paquet amb:

$ sudo apt-src install pingus

En aquest cas en estem descarregant el codi font del joc Pingus (un port del joc Lemmings).


Fitxers de log

Fitxer /var/log/apt/term.log

Aquest fitxer guarda els resultats de totes les execucions d'apt que s'han fet per la terminal

$ sudo cat /var/log/apt/term.log

add-apt-repository

L'ordre es proporcionada per:

$ dpkg -S /usr/bin/add-apt-repository
python-software-properties: /usr/bin/add-apt-repository

Es pot utilitzar per afegir una línia de repositori al fitxer /etc/apt/sources.list, per exemple per instal·lar el repositori de Gosa:

$ sudo add-apt-repository "deb http://oss.gonicus.de/pub/gosa/debian-squeeze/ ./"

No realitza cap mena de control de si el repositori ja existeix. Si que control però que la sintaxi sigui correcte

Un exemple utilitzant PPAs:

$ sudo add-apt-repository ppa:jason-scheunemann/ppa
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt /trusted.gpg --keyserver keyserver.ubuntu.com --recv B7A54DFD57990DE60964F52D932062C9CD30EE56 
gpg: requesting key CD30EE56 from hkp server keyserver.ubuntu.com
gpg: key CD30EE56: public key "Launchpad PPA for flyguy97" imported
gpg: Nombre total processat: 1
gpg:               importades: 1  (RSA: 1)
$ sudo apt-get update

Com estar informat quant als canvis en els paquets. apt-listchanges

Cada paquet instal·la en el seu directori de documentació (/usr/share/doc/nom_paquet) un fitxer anomenat changelog.Debian.gz el qual conté una llista dels canvis realitzats al paquet des de l'última versió. Podeu llegir aquests fitxers amb l'ajuda de zless, per exemple, però no és gaire simple que després d'una actualització s'hagin d'estar cercant aquests registres de canvis per a cadascun dels paquets actualitzats.

Hi ha una manera per automatitzar aquesta tasca mitjançant una eina que s'anomena apt-listchanges. Per a començar primer es requereix que instal·leu el paquet apt-listchanges. Durant la seva instal·lació, Debconf la configurarà. Respongueu les preguntes com desitgeu.

L'opció "Voldreu que apt executi automàticament apt-listchanges?" és realment útil perquè mostra una llista dels canvis que s'han realitzat per a cadascun dels paquets que està instal·lant apt durant una actualització i us permet analitzar-los abans de continuar. L'opció "Tindrà apt-listchanges que demanar confirmació després de mostrar els canvis?" és d'utilitat perquè us demana si desitgeu continuar l'instal·lació després de llegir la llista de canvis. Si decidiu no continuar, apt-listchanges retornarà un error i avortarà l'instal·lació.

Una vegada instal·lat apt-listchanges, tan aviat com els paquets hagin estat descarregats (o llegits des d'un CD o dic muntat) per APT, es mostraran les llistes de canvis realitzats a dits paquets abans d'instal·lar-los.


$ sudo apt-get install apt-listchanges

dpkg

Dpkg és l'aplicació encarregada de gestionar els paquets Debian. Dpkg és una eina de baix nivell i normalment com a usuaris utilitzarem altres eines a nivell més alt (com apt-get o aptitude) per la gestió bàsica de paquets (instal·lar, esborrar, actualitzar...).

De totes formes dpkg ens pot servir per obtenir informació del nostre sistema, tal i com podeu veure a les receptes "Com ...." de més avall.

La sintaxi és:

$ dpkg [options][action] [package-files|package-name]

Les accions de dpkg que més ens poden interessar com usuaris son les anomenades dpkg-query-actions, o accions de només consulta (no impliquen canvis al sistema):

  • dpkg -l | --list package-name-pattern : Llista els paquets que compleixen amb un determinat patró.
  • dpkg -s | --status package-name : mostra l'estatus actual d'un paquet i la metainformació del paquet.
  • dpkg -L | --listfiles package : Mostra la llista de fitxers instal·lats per un paquet.
  • dpkg -S | --search filename-search-pattern : Busca un fitxer concret dins dels paquets instal·lats
  • dpkg -p | --print-avail package : Mostra detalls sobre un paquet instal·lat.
  • dpkg -I | --info package-name: Mostra informació sobre un paquet desinstal·lat.

Aquestes comandes tenen la seva pròpia entrada del manual:

Per a aquestes accions no cal ser superusuari

Després hi altres accions que impliquen canvis en els sistema:

  • dpkg -i | --install package-file: Instal·la un paquet a partir d'un fitxer .deb
  • dpkg --configure package-name: Torna a configurar un paquet ja instal·la. Executa l'script de post-instal·lació.
  • dpkg -r | --remove package_name: Elimina un paquet, però deixa els fitxers de configuració de sistema.
  • dpkg -P | --purge package_name: Elimina un paquet incloent els fitxers de configuració.
  • dpkg -C | --audit: busca fitxers instal·lats parcialment al sistema i suggereix que fer amb ells.
Els fitxers de configuració d'usuari (fitxers ocults a la HOME de l'usuari) sempre es mantenen i mai són modificats pels processos d'instal·lació o eliminació de paquets.

Les opcions més utilitzades són:

  • --root=dir: permet indicar una altres sistema arrel on efectura les operacions relacionades amb dpkg. Útil en imatges o sistemes chroot o per recuperar sistemes amb Live-CDs
  • -B or --auto-deconfigure: Es combina amb l'acció remove (-r). Desactiva els paquets que depenen del paquet a esborrar.
  • --force-things: Opcions force
  • --ignore-depends=package: ignora les dependències
  • --no-act: comprova dependències i altres accions però no instal·lis o eliminis el paquet.
  • --recursive. utilitzat amb wildcards
  • -G: no instal.lis el paquet si hi ha una versió més nova ja instal·lada
  • -E: No instal·lis el paquet si ja està instal·lada la mateixa versió

I altres accions són més orientades a desenvolupadors:

  • dpkg -e: extreu el fitxer de control amb la meta-informació del paquet.
  • dpkg -b: Crea/construeix(build) un paquet Debian binari.
  • dpkg --fsys-tarfile: extreure els fitxers a instal·lar per part del paquet.

L'ordre dpkg es proporcionada pel paquet del mateix nom:

$ whereis dpkg
dpkg: /usr/bin/dpkg /etc/dpkg /usr/lib/dpkg /usr/share/dpkg /usr/share/man/man1/dpkg.1.gz
$ dpkg -S /usr/bin/dpkg
dpkg: /usr/bin/dpkg

Dpkg-deb ens proporciona les eines per crear paquets.

dpkg-query

Es poden cercar quin paquet ens han proporcionat un fitxer específic:

$ dpkg-query -S '/bin/ls'
$ dpkg-query -S 'passwd*'
$ dpkg-query --search '/path/to/file'

dpkg-reconfigure

Permet tornar a configurar un paquet. Per exemple els locales:

$ sudo dpkg-reconfigure locales

Si l'aplicació utilitzava menús "d'entorn gràfic" ncurses de debconf aleshores es tornen a mostrar els menús de configuració.

De fet dpkg-reconfigure és una ordre proporcionada per debconf:

$ dpkg -L debconf | grep bin
/usr/sbin
/usr/sbin/dpkg-preconfigure
/usr/sbin/dpkg-reconfigure 
/usr/bin
/usr/bin/debconf
/usr/bin/debconf-apt-progress
/usr/bin/debconf-communicate
/usr/bin/debconf-copydb
/usr/bin/debconf-escape
/usr/bin/debconf-set-selections
/usr/bin/debconf-show
...

La sintaxi de l'ordre és:

$ sudo dpkg-reconfigure [options] packages

On les opcions són:

  • -ftype, --frontend=type: Seleccioneu el frontend a utilitzar
  • -pvalue, --priority=value: Especifica el llindar mínim de prioritat. Tots les opcions de configuració igual o per sobre d'aquest llindar, seran mostrades.
  • --default-priority: Utilitzar la prioritat per defecte.
  • -a, --all: Configurar tots els paquets del sistema que utilitzen debconf
  • -u, --unseen-only: Només mostra les qüestions que no han esta contestades prèviament.
  • --force: Força un dpkg-reconfigure inclús si el paquet està en un estat inconsistent o trencat.
  • --no-reload: No torna a carregar les plantilles.
  • -h, --help: Mostra com funciona l'ordre.

dpkg --configure

No és el mateix que l'apartat anterior (dpkg-reconfigure). Només s'aplica quan un paquet ha quedat pendent de configurar durant la instal·lació. Es poden buscar paquets d'aquest tipus amb l'opció auditar dpkg -C:

$ sudo dpkg -C
Els paquets següents només estan configurats a mitges, probablement
a causa de problemes en la configuració inicial.  S'ha de reintentar
la configuració amb dpkg --configure <paquet> o l'opció configurar
en el menú de dselect:
 linux-image-2.6.31.6-custom Linux kernel binary image for version 2.6.31.6-cus
$ sudo dpkg --configure linux-image-2.6.31.6-custom
S'està configurant linux-image-2.6.31.6-custom (2.6.31.6-custom-10.00.Custom) ...
Running depmod.
...

Estat dels paquets

Els paquets poden estar en algun dels següents estats:

  • installed: el paquet s'ha desempaquetat i instal·lat correctament
  • half-installed: la instal·lació del paquet s'ha començat però no s'ha acabat per algun motiu/error.
  • not-installed: el paquet no esta instal·lat al sistema
  • unpacked: el paquet esta desempaquetat per no configurat.
  • half-configured: el paquet s'ha desempaquetat i la configuració s'ha iniciat però no s'ha acabat per algun motiu/error.
  • config-files: només queden al sistema els fitxers de configuració (remove sense purge)
  • triggers-awaited: pendent d'un trigger (gallet)
  • triggers-pending: El paquet a estat triggered.

L'estat es pot consultar amb l'ordre dpkg -l:

$  dpkg -l | more
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Nom                                        Versió                                    Descripció
+++-==========================================-==========================================-============================================
ii  acl                                        2.2.47-2                                   Access control list utilities
ii  acpi-support                               0.129                                      scripts for handling many ACPI events
ii  acpid                                      1.0.6-9ubuntu8                             Utilities for using ACPI power management
...

L'estat correspon al segon caràcter de la primera columna. Consulteu:

Consulteu també la llegenda del menú Ajuda de l'aplicació Synaptic.

Estat de selecció dels paquets

  • install (i): El paquet esta seleccionat per ser instal·lat.
  • deinstall(r): Els paquet esta seleccionat per ser desinstal·lat
  • purge (p): el paquet esta instal·lat per ser purgat (desinstal·la i esborra els fitxers de configuració)
  • Desconegut (u): No es coneix l'estat de selecció

Consulteu dselect.

Indicadors dels paquets (error estatus)

  • hold (h): Els paquets marcats amb hold no son controlats per dpkg (excepte que s'utilitzi --force-hold).
  • reinst-require (r): El paquet esta trencat i necessita ser reinstal·lat
  • None: no apareix cap caràcter
  • Both problems (x) : els dos problemes anteriors

Procés d'instal·lació d'un paquet

  1. S'extreu el fitxer de control del nou paquet.
  2. Si ja hi ha una versió del paquet a instal·lar en el sistema (actualització) s'executa l'script prerm si existeix.
  3. S'executa l'script preinst si el paquet proveix d'aquest script.
  4. Es desempaqueta els nous paquets i al mateix temps és fa una copia dels antics per si quelcom no funciona correctament i es voles restaurar.
  5. Si ja hi ha una versió del paquet a instal·lar en el sistema (actualització) s'executa l'script postrm si existeix.
  6. Es configura el paquet (--configure). La configuració del paquet suposa:
    1. Desempaquetar els fitxers de configuració i al mateix temps fer una copia de seguretat dels antics
    2. Executar l'script postinst si existeix.

Procés d'eliminació d'un paquet

  1. S'executa l'script prerm.
  2. S'eliminen els fitxers instal·lats (si am és hi ha la opció --purge s'eliminen els fitxers de configuració també)
  3. S'executa l'script postrm.

Interpretació dels resultats de les comandes de query

La comanda dpkg -l ens proporciona una sortida composta per quatre columnes:

  • Estatus: estat del paquet
  • Name: nom del paquet
  • Version: versió del paquet.
  • Description: descripció del paquet.

L'estatus té tres columnes formades cadascuna per un digit:

  • Selection status. Els possibles valors són:
    • Unknown (u)
    • Install (i)
    • Remove (r)
    • Purge (p)
  • Status. Els possibles valors són:
    • Not installed (n)
    • Installed (i)
    • Config-files (c)
    • Unpacked (u)
    • Failed-config (f)
    • Half-installed (h)
  • Error status. Els possibles valors són:
    • None
    • Hold (h)
    • Reinstallation required (r)
    • Both problems (x)

La columna error esta buida si no hi ha cap error. Un exemple de línia pot ser:

|/ Nom                        Versió           Descripció
+++-==========================-=================-============================================
ii  gnome-about                2.16.1-0ubuntu1   The GNOME about box

Que ens indica que el paquet gnome-about esta instal·lat sense errors en la seva versió 2.16.1-0ubuntu1.

Mostrar informació sobre un paquet

$ dpkg -p upstart
Package: upstart
Priority: required
Section: base
Installed-Size: 352
Maintainer: Scott James Remnant <scott@ubuntu.com>
Architecture: i386
Version: 0.3.9-8
Replaces: sysvinit
Pre-Depends: libc6 (>= 2.7), sysvinit-utils
Recommends: upstart-compat-sysv, upstart-logd, startup-tasks, system-services
Conflicts: sysvinit
Size: 173672
Description: event-based init daemon
 upstart is a replacement for the /sbin/init daemon which handles
 starting of tasks and services during boot, stopping them during
 shutdown and supervising them while the system is running.

Vegeu també apt-cache show.

L'opció dpkg -s és molt similar però a més mostra l'estatus del paquet.

Instal·lar un paquet

$ sudo dpkg -i webmin_1.480_all.deb

Consulteu procés d'instal·lació d'un paquet per tal de saber les passes que es segueixen durant la instal·lació d'un paquet

Desinstal.lar/eliminar un paquet

$ sudo dpkg -r hello
Si el fitxer disposa de fitxers de configuració (carpeta /etc segons l'estàndard FHS) aquests es mantenen al sistema. Consulteu dpkg- P.

Podeu instal·lar prèviament el paquet de l'exemple amb:

$ sudo apt-get install hello

Desinstal.lar/eliminar un paquet completament

Cal utilitzar l'opció purge (-P):

 $ sudo dpkg -P bind9

Es desintal·la el fitxers i els seus fitxers de configuració.

Com saber quants paquets tenim instal·lats al nostre sistema

$ dpkg -l | wc -l
1467

A priori sembla la resposta correcte però realment hauríem de filar més prim:

$ dpkg -l | grep '^i' | wc -l
1451

D'on surt la diferència? La opció grep '^i' ens filtra els paquets que estan instal·lats.. Això vol dir que tenim altres paquets que estan en uns esta diferent a instal·lats. Per Exemple:

$ dpkg --list | grep '^rc' | wc -l
11

Ens mostra que hi ha 11 paquets que han estat eliminats (removed r) però dels quals, s'han deixat els fitxers de configuració (config-files c).

Encara i així ens falten 5 de diferència... La comanda wc conté línies, els 5 "paquets" que ens "falten" són els corresponents a les línies:

Desitjat=Desconegut(u)/Instal·la(i)/Elimina(r)/Neteja(p)/Atura(h)
| Estat=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Estat,Err: majúsc.=dolent)
||/ Nom                                    Versió                               Descripció
+++-======================================-=====================================-===========================

De la sortida de dpkg -l que també les conté la comanda wc.

Com obtenir una llista dels paquets instal·lats al nostres sistema

Podem utilitzar l'acció list:

$ dpkg -l

o

$ dpkg --list
Cal tenir en compte que aquest ordre mostra tant els paquets instal·lats com els eliminats sense purge i altres paquets. Consulteu Dpkg#Interpretaci.C3.B3_dels_resultats_de_les_comandes_de_query

A priori sembla la resposta correcte però realment hauríem de filar més prim si volem només mostrar els instal·lats:

$ dpkg -l | grep '^i'

Com obtenir una llista dels paquets instal·lats al nostres sistema segons un patró

Per exemple coneixer tots els paquets instal·lats de gnome:

$ dpkg -l 'gnome*'
Desitjat=Desconegut(u)/Instal·la(i)/Elimina(r)/Neteja(p)/Atura(h)
| Estat=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Estat,Err: majúsc.=dolent)
||/ Nom                            Versió                        Descripció
+++-==============================-==============================-============================================================================
ii  gnome-about                    2.16.1-0ubuntu1                The GNOME about box
ii  gnome-accessibility-themes     2.16.1.1-0ubuntu1              accessibility themes for the GNOME 2 desktop
un  gnome-admin                    <cap>                          (no hi ha cap descripció disponible)
ii  gnome-app-install              0.2.21                         GNOME Application Installer
un  gnome-app-install-data         <cap>                          (no hi ha cap descripció disponible)
ii  gnome-applets                  2.16.1-0ubuntu3                Various applets for GNOME 2 panel - binary files
ii  gnome-applets-data             2.16.1-0ubuntu3                Various applets for GNOME 2 panel - data files
un  gnome-apt                      <cap>                          (no hi ha cap descripció disponible)
un  gnome-audio                    <cap>                          (no hi ha cap descripció disponible)
un  gnome-bluetooth                <cap>                          (no hi ha cap descripció disponible)
ii  gnome-btdownload               0.0.24-0ubuntu1                Gnome interface for 'executing' BitTorrent files
un  gnome-card-games               <cap>                          (no hi ha cap descripció disponible)
ii  gnome-control-center           2.16.1-0ubuntu4.2              utilities to configure the GNOME desktop
un  gnome-core                     <cap>                          (no hi ha cap descripció disponible)
un  gnome-cpufreq-applet           <cap>                          (no hi ha cap descripció disponible)
ii  gnome-cups-manager             0.31-1.1ubuntu14               CUPS printer admin tool for GNOME
ii  gnome-desktop-data             2.16.1-0ubuntu1                Common files for GNOME 2 desktop apps
ii  gnome-doc-utils                0.8.0-0ubuntu1                 a collection of documentation utilities for the Gnome project
ii  gnome-games                    2.16.1-0ubuntu3                games for the GNOME desktop
ii  gnome-games-data               2.16.1-0ubuntu3                data files for the GNOME games
un  gnome-games-extra-data         <cap>                          (no hi ha cap descripció disponible)
un  gnome-gv                       <cap>                          (no hi ha cap descripció disponible)
un  gnome-help                     <cap>                          (no hi ha cap descripció disponible)
ii  gnome-icon-theme               2.16.0.1-0ubuntu2              GNOME Desktop icon theme
un  gnome-intro                    <cap>                          (no hi ha cap descripció disponible)
ii  gnome-keyring                  0.6.0-0ubuntu2                 GNOME keyring services (daemon and tools)
ii  gnome-keyring-manager          2.16.0-1ubuntu1                keyring management program for the GNOME desktop
un  gnome-libs-data                <cap>                          (no hi ha cap descripció disponible)
ii  gnome-mag                      0.13.1-0ubuntu3                a screen magnifier for the GNOME desktop
ii  gnome-media                    2.16.1-0ubuntu2                GNOME media utilities
ii  gnome-media-common             2.16.1-0ubuntu2                GNOME media utilities - common files
ii  gnome-menus                    2.16.1-0ubuntu1                an implementation of the freedesktop menu specification for GNOME
ii  gnome-mime-data                2.4.2-2                        base MIME and Application database for GNOME.
ii  gnome-netstatus-applet         2.12.0-5ubuntu6                Network status applet for GNOME 2
ii  gnome-nettool                  2.16.0-0ubuntu1                network information tool for GNOME
un  gnome-network                  <cap>                          (no hi ha cap descripció disponible)
un  gnome-orca                     <cap>                          (no hi ha cap descripció disponible)
ii  gnome-panel                    2.16.1-0ubuntu3                launcher and docking facility for GNOME 2
ii  gnome-panel-data               2.16.1-0ubuntu3                common files for GNOME 2 panel
un  gnome-panel2                   <cap>                          (no hi ha cap descripció disponible)
un  gnome-phone-manager            <cap>                          (no hi ha cap descripció disponible)
ii  gnome-pilot                    2.0.14-0ubuntu2                A GNOME applet for management of your Palm PDA
ii  gnome-pilot-conduits           2.0.14-0ubuntu1                conduits for gnome-pilot
un  gnome-power                    <cap>                          (no hi ha cap descripció disponible)
ii  gnome-power-manager            2.16.1-0ubuntu3                frontend for gnome-powermanager
un  gnome-printinfo                <cap>                          (no hi ha cap descripció disponible)
ii  gnome-screensaver              2.16.1-0ubuntu1                a screen saver and locker
ii  gnome-session                  2.16.1-0ubuntu1                The GNOME 2 Session Manager
ii  gnome-spell                    1.0.7-1ubuntu1                 GNOME/Bonobo component for spell checking
un  gnome-sudo                     <cap>                          (no hi ha cap descripció disponible)
ii  gnome-system-monitor           2.16.1-0ubuntu1                Process viewer and system resource monitor for GNOME 2
ii  gnome-system-tools             2.15.5-0ubuntu4                Cross-platform configuration utilities for GNOME
ii  gnome-terminal                 2.16.1-0ubuntu1                The GNOME 2 terminal emulator application
ii  gnome-terminal-data            2.16.1-0ubuntu1                Data files for the GNOME terminal emulator
un  gnome-terminal2                <cap>                          (no hi ha cap descripció disponible)
ii  gnome-themes                   2.16.1.1-0ubuntu1              official themes for the GNOME 2 desktop
un  gnome-themes-extras            <cap>                          (no hi ha cap descripció disponible)
un  gnome-user-guide               <cap>                          (no hi ha cap descripció disponible)
ii  gnome-utils                    2.16.1-0ubuntu1                GNOME desktop utilities
ii  gnome-volume-manager           2.15.0-0ubuntu7                GNOME daemon to auto-mount and manage media devices
un  gnome-www-browser              <cap>                          (no hi ha cap descripció disponible)
ii  gnome2-user-guide              2.16.1-0ubuntu1                GNOME 2 User's Guide

Com comprovar si tenim un paquet instal·lat

Combinant dpkg amb grep:

$ dpkg -l | grep nom_del_paquet

Per exemple:

$ dpkg -l | grep coreutils
ii coreutils                             7.4-2ubuntu1                               The GNU core utilities

Plantilla:Important

Alguns paquets poden apareixer però no està instal·lats. Per exemple els paquets esborrats però del quals s'han mantingut els fitxers de configuració (marcats amb rc):

$ dpkg -l | grep tomcat
rc  tomcat6                               6.0.20-2ubuntu2                            Servlet and JSP engine

Com podem conèixer quin paquet instal·la un fitxer o comanda concret

Podem fer cerques amb el paràmetre -S. Per exemple per buscar la comanda users

$ dpkg -S users
moodle: /usr/share/moodle/mod/chat/gui_header_js/users.php
moodle: /usr/share/moodle/pix/i/users.gif
firefox: /usr/share/firefox/chrome/en-US/locale/browser/help/forieusers.xhtml
gnome-system-tools: /usr/share/omf/users-admin/users-admin-C.omf
tango-icon-theme: /usr/share/icons/Tango/22x22/apps/system-users.png
gnome-system-tools: /usr/bin/users-admin
gnome-system-tools: /usr/share/gnome-system-tools/interfaces/users.glade
gnome-system-tools: /usr/share/gnome/help/users-admin/C
.........................

Com podeu veure el resultat és massa llarg....

En aquest cas com que es tracta d'una comanda podem executar

$ which users
/usr/bin/users

O millor encara:

$ whereis users

I ara podem filtrar el resultat de l'anterior cerca:

$ dpkg -S users | grep /usr/bin/users
gnome-system-tools: /usr/bin/users-admin
coreutils: /usr/bin/users

I obtenim que el paquet que instal·la la comanda és el paquet core-utils. Alguns fitxers per sort no requereixen filtrar:

$ dpkg -S ifconfig
net-tools: /sbin/ifconfig
net-tools: /usr/share/man/man8/ifconfig.8.gz

Obtenir la llista de fitxers que instal·la un paquet en el sistema

$dpkg -L nom_paquet

Exemple:

$ dpkg -L net-tools
/usr
/usr/sbin
/usr/sbin/arp
/usr/share
/usr/share/man
/usr/share/man/man5
/usr/share/man/man5/ethers.5.gz
/usr/share/man/man8
/usr/share/man/man8/mii-tool.8.gz
/usr/share/man/man8/nameif.8.gz
/usr/share/man/man8/netstat.8.gz
/usr/share/man/man8/plipconfig.8.gz
/usr/share/man/man8/rarp.8.gz
/usr/share/man/man8/route.8.gz
/usr/share/man/man8/arp.8.gz
/usr/share/man/man8/ifconfig.8.gz
/usr/share/man/man8/slattach.8.gz
/usr/share/doc
/usr/share/doc/net-tools
/usr/share/doc/net-tools/README
/usr/share/doc/net-tools/README.ipv6
/usr/share/doc/net-tools/TODO
/usr/share/doc/net-tools/copyright
/usr/share/doc/net-tools/changelog.Debian.gz
/sbin
/sbin/ifconfig
/sbin/nameif
/sbin/plipconfig
/sbin/rarp
/sbin/route
/sbin/slattach
/sbin/ipmaddr
/sbin/iptunnel
/sbin/mii-tool 
/bin
/bin/netstat

NOTA: El fet que apareguin carpetes com /bin no implica uqe las instal·li aquests paquet. L'´unic que implica és que si en el momnt d'instal·lar el paquet aquesta carpeta no existeix el paquet la crearà.

NOTA 2: Cal tenir el paquet instal·lat per poder consultar els fitxers que instal·la:

$ dpkg -L kdissert
El paquet «kdissert» no està instal·lat.
Useu dpkg --info (= dpkg-deb --info) per a examinar els fitxers d'arxiu,
i dpkg --contents (= dpkg-deb --contents) per a llistar-ne el contingut.

Com diu l'error si disposem del fitxer .deb podem consultar el seu contingut amb

$ dpkg --contents pnom_paquet_debian.deb

Per consultar a priori els continguts d'un paquet si és de Debian podem anar a http://www.debian.org/distrib/packages. Desconeixo si hi ha quelcom semblant per a Ubuntu

Una alternativa és anar a la carpeta pool dels repositoris d'Ubuntu (o un mirror) com per exemple http://es.archive.ubuntu.com/ubuntu hi buscar el paquet que busquem. Els paquets estan ordenats per carpetes i alfabèticament. Per exemple el paquet liba52-0.7.4_0.7.4-1_amd64:

http://es.archive.ubuntu.com/ubuntu/pool/main/a/a52dec/liba52-0.7.4_0.7.4-1_amd64.deb

un cop hem trobat el paquet podem executar:

$ wget http://es.archive.ubuntu.com/ubuntu/pool/main/a/a52dec/liba52-0.7.4_0.7.4-1_amd64.deb
--19:58:03--  
           => `liba52-0.7.4_0.7.4-1_amd64.deb'
Resolent es.archive.ubuntu.com... 195.248.90.35, 195.248.90.38
S'està connectant a es.archive.ubuntu.com|195.248.90.35|:80... conectat.
HTTP: Petició enviada, esperant resposta... 200 OK
Longitud: 28,354 (28K) [application/x-debian-package]

100%[====================================================================================================>] 28,354        67.04K/s             

19:58:03 (66.78 KB/s) - s'ha desat «liba52-0.7.4_0.7.4-1_amd64.deb» [28354/28354]

$ dpkg --contents liba52-0.7.4_0.7.4-1_amd64.deb
drwxr-xr-x root/root         0 2004-08-18 02:18 ./
drwxr-xr-x root/root         0 2004-08-18 02:18 ./usr/
drwxr-xr-x root/root         0 2004-08-18 02:18 ./usr/lib/
-rw-r--r-- root/root     42032 2004-08-18 02:18 ./usr/lib/liba52-0.7.4.so
drwxr-xr-x root/root         0 2004-08-18 02:18 ./usr/share/
drwxr-xr-x root/root         0 2004-08-18 02:18 ./usr/share/doc/
drwxr-xr-x root/root         0 2004-08-18 02:18 ./usr/share/doc/liba52-0.7.4/
-rw-r--r-- root/root       648 2004-08-18 02:18 ./usr/share/doc/liba52-0.7.4/changelog.Debian.gz
-rw-r--r-- root/root       443 2002-04-15 09:10 ./usr/share/doc/liba52-0.7.4/TODO
-rw-r--r-- root/root      1031 2002-07-28 03:55 ./usr/share/doc/liba52-0.7.4/AUTHORS
-rw-r--r-- root/root      1104 2004-08-18 02:18 ./usr/share/doc/liba52-0.7.4/copyright
-rw-r--r-- root/root      2027 2002-07-28 05:50 ./usr/share/doc/liba52-0.7.4/changelog.gz
-rw-r--r-- root/root       723 2002-07-28 05:50 ./usr/share/doc/liba52-0.7.4/NEWS.gz
-rw-r--r-- root/root      2820 2002-06-08 22:11 ./usr/share/doc/liba52-0.7.4/README.gz

Obtenir la llista de comandes (binaris) que instal·la un paquet en el sistema

$ dpkg -L net-tools | grep bin
/usr/sbin
/usr/sbin/arp
/sbin
/sbin/ifconfig
/sbin/nameif
/sbin/plipconfig 
/sbin/rarp
/sbin/route
/sbin/slattach
/sbin/ipmaddr
/sbin/iptunnel
/sbin/mii-tool
/bin
/bin/netstat

Obtenir la llista de fitxers de configuració (carpeta etc) que instal·la un paquet en el sistema

$ dpkg -L ifupdown | grep etc
/etc
/etc/network
/etc/network/if-pre-up.d
/etc/network/if-up.d
/etc/network/if-down.d
/etc/network/if-post-down.d
/etc/init.d
/etc/init.d/loopback
/etc/udev
/etc/udev/rules.d
/etc/udev/rules.d/85-ifupdown.rules

Consultar l'estat i les metadades d'un fitxer

Molt similar a dpkg -p però a més mostra l' estatus del paquet.

$ dpkg -s apache2
Package: apache2
Status: install ok installed
Priority: optional
Section: httpd
Installed-Size: 36
Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: all
Version: 2.2.12-1ubuntu2.1
Depends: apache2-mpm-worker (>= 2.2.12-1ubuntu2.1) | apache2-mpm-prefork (>= 2.2.12-1ubuntu2.1) | apache2-mpm-event (>= 2.2.12-1ubuntu2.1) | 
apache2-mpm-itk (>= 2.2.12-1ubuntu2.1), apache2.2-common (= 2.2.12-1ubuntu2.1) 
Description: Apache HTTP Server metapackage
 The Apache Software Foundation's goal is to build a secure, efficient and
 extensible HTTP server as standards-compliant open source software. The
 result has long been the number one web server on the Internet. 
 .
 It features support for HTTPS, virtual hosting, CGI, SSI, IPv6, easy
 scripting and database integration, request/response filtering, many
 flexible authentication schemes, and more.
Homepage: http://httpd.apache.org/
Original-Maintainer: Debian Apache Maintainers <debian-apache@lists.debian.org>

Obtenir el nom dels paquets ordenats per mida

$ dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -nr | more
99400 openoffice.org-core
76696 tetex-base
65824 mysql-server-5.0
65084 sun-java5-bin
64048 linux-image-2.6.17-10-386
60844 linux-image-2.6.15-27-386
60604 linux-image-2.6.15-23-386
58880 linux-headers-2.6.17-10
54740 linux-headers-2.6.15-27
42152 tetex-extra
41520 foomatic-db-gutenprint
39396 openoffice.org-common
38204 evolution
.......................

Com obtenir una llista dels paquets instal·lats amb només els noms dels paquets

Podem utilitzar la comanda awk:

$ dpkg --list | grep '^ii' | awk '{ print $2; }'  

Si volem podem guardar aquesta llista en un fitxer:

$ dpkg --list | grep '^ii' | awk '{ print $2; }' > paquets_instal·lats.txt


Com saber quins paquets han estat eliminats però no purgats (no s'ha eliminat els fitxers de configuració)

$ dpkg --list | grep ^rc

Com saber quins paquets han estat eliminats però no purgats (no s'ha eliminat els fitxers de configuració)

$ dpkg --list | grep ^rc | awk '{ print $2; }'

Com eliminar els fitxers de configuració dels paquets no purgats

$ dpkg --purge $(dpkg --list | grep ^rc | awk '{ print $2; }')

Com saber els canvis en un paquet

$ dpkg -L paquet | grep -i changelog

Contesta amb els arxius que contenen el registre de canvis. Exemple

$ dpkg -L kmail|grep -i changelog
/usr/share/doc/kmail/changelog.gz
/usr/share/doc/kmail/changelog.Debian.gz 
$ more /usr/share/doc/kmail/changelog

Com obtenir una llista dels paquets instal·lats i utilitzar-la per tornar a instal·lar-los en cas de reinstal·lació del sistema

Consulteu apt-get hold per veure com utilitzar l'opció --set-selections per tal de bloquejar l'actualització de paquets

L'opció --get-selections de l'ordre dpkg us mostrà una llista dels paquets instal·lats al sistema:

$ dpkg --get-selections | more
acpi-support					install
acpid						install
adduser						install
aisleriot					install
alacarte					install
alien						install
alsa-base					install
alsa-utils					install
anacron						install
ant						install
ant-doc						install
ant-gcj						install
...

Per exemple amb:

$ dpkg --get-selections | grep -v deinstall > ubuntu-files

Tenim un fitxer ubuntu-files on tenim la llista de paquets instal·lats al nostre sistema. Per reinstal·lar:

$ sudo aptitude update

$ sudo aptitude dist-upgrade
$ dpkg --set-selections < ubuntu-files

$ sudo aptitude

Plantilla:Important

Com auditar el sistema en busca de paquets pendents d'acabar la seva instal·lació

$ sudo dpkg -C
Els paquets següents només estan configurats a mitges, probablement
a causa de problemes en la configuració inicial.  S'ha de reintentar
la configuració amb dpkg --configure <paquet> o l'opció configurar
en el menú de dselect:
 linux-image-2.6.31.6-custom Linux kernel binary image for version 2.6.31.6-cus

Mostrar els continguts d'un fitxer paquet

$ dpkg -c {file.deb}

Paquets orfes

$ apt-cache search orphan
.................
deborphan - Find orphaned libraries
....

deborphan és una utilitat per controlar els paquets orfes...

Troubleshooting

Not replacing deleted config file or why the dpkg

$ aptitude -o DPkg::Options="--force-confmiss" reinstall rsyslog

On rsyslog en aquest cas és el paqeut que dona problemes.

Couldn't stat source package list

Si rebeu un missatge semblant al següent quan intenteu executar apt-get install paquet...

Reading Package Lists... Done
Building Dependency Tree... Done
W: Couldn't stat source package list 'http://people.debian.org unstable/ Packages'       
(/var/state/apt/lists/people.debian.org_%7ekov_debian_unstable_Packages) - stat (2 No such file or directory)
W: You may want to run apt-get update to correct these missing files
E: Couldn't find package penguineyes

us heu oblidat d'executar apt-get update després del vostre últim canvi al fitxer /etc/apt/sources.list.

Si l'error mostrat és com aquest:

E: Could not open lock file /var/lib/dpkg/lock - open (13 Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

quan escolliu qualsevol altre mètode per a apt-get diferent a source, és que no disposeu dels permisos d'usuari root, el qual ve a indicar, que l'esteu executant com a un usuari normal.

Hi ha un error similar a l'anterior que passa quan executeu dues còpies de apt-get alhora o quan intenteu executar apt-get mentres un procés dpkg està actiu. L'únic mètode que es pot emprar simultàniament amb els altres és source.

Si una instal·lació peta a la meitat del procés i us trobeu amb que ja no és possible instal·lar o eliminar paquets, intenteu executar aquests dos comandaments:

# apt-get -f install
# dpkg --configure -a

I després proveu-ho una altra vegada. Podria ser necessari executar el segon comandament més d'una vegada. Aquest és una important lliçó per aquells aventurers que usen "unstable".

Si rebeu l'error "E: Dynamic MMap ran out of room" a l'executar apt-get update, afegiu la següent línia a /etc/apt/apt.conf:

APT::Cache-Limit 10000000;

Enllaços externs