IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

NOTA: Consulteu LPI 102.4. Utilitzar els gestors de paquets tipus Debian i Creació de paquets Debian

Alert.png Aquesta wiki forma part dels materials d'un curs
Curs: DissenyXarxesLinux, LinuxAdministracioAvancada, IntroduccioLinux
Fitxers: IniciacioLinux.pdf,paquets.pdf
Repositori SVN: https://svn.projectes.lafarga.cat/svn/iceupc/IntroduccioLinux
Usuari: anonymous
Paraula de pas: sense paraula de pas
Autors: Sergi Tur Badenas

Contingut

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 8.04 _Hardy Heron_ - Release i386 (20080423)]/ hardy main restricted
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.

deb http://ch.archive.ubuntu.com/ubuntu/ hardy main restricted
deb-src http://ch.archive.ubuntu.com/ubuntu/ hardy main restricted 

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

## 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
## universe WILL NOT receive any review or updates from the Ubuntu security
## team.
deb http://ch.archive.ubuntu.com/ubuntu/ hardy universe
deb-src http://ch.archive.ubuntu.com/ubuntu/ hardy universe
deb http://ch.archive.ubuntu.com/ubuntu/ hardy-updates universe
deb-src http://ch.archive.ubuntu.com/ubuntu/ hardy-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://ch.archive.ubuntu.com/ubuntu/ hardy multiverse
deb-src http://ch.archive.ubuntu.com/ubuntu/ hardy multiverse
deb http://ch.archive.ubuntu.com/ubuntu/ hardy-updates multiverse
deb-src http://ch.archive.ubuntu.com/ubuntu/ hardy-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://ch.archive.ubuntu.com/ubuntu/ hardy-backports main restricted universe multiverse
# deb-src http://ch.archive.ubuntu.com/ubuntu/ hardy-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 hardy partner
# deb-src http://archive.canonical.com/ubuntu hardy partner  

deb http://security.ubuntu.com/ubuntu hardy-security main restricted
deb-src http://security.ubuntu.com/ubuntu hardy-security main restricted
deb http://security.ubuntu.com/ubuntu hardy-security universe
deb-src http://security.ubuntu.com/ubuntu hardy-security universe
deb http://security.ubuntu.com/ubuntu hardy-security multiverse
deb-src http://security.ubuntu.com/ubuntu hardy-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. Per exemple podeu utilitzar joe:

$ sudo joe /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

Com afegir un repositori amb apt

Cal afegir una línia al fitxer sources.list. Per exemple, per afegir els repositoris per al ultraportàtil Asus eeePC cal afegir la línia:

deb http://www.array.org/ubuntu intrepid eeepc

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

Com afegir un repositori amb Synaptic

Podeu afegir repositoris des de l'entorn gràfic utilitzant Synaptic. Consulteu Afegint repositoris extres amb synaptic

Com afegir repositoris d'Ubuntu

Consulteu l'article Repositoris_Ubuntu. Concretament l'apartat Com fegir repositoris a Ubuntu.

Com afegir una clau

Per instal·lar una clau primer s'ha de descarregar d'Internet. Normalment us la proporcionarà el proveidor del repositori. Per exemple, per afegir la clau dels repositoris de l'ultraportàtil Asus eeePC 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:

$ dpkg -L apt
/.
/usr
/usr/bin
/usr/bin/apt-cache
/usr/bin/apt-cdrom
/usr/bin/apt-config
/usr/bin/apt-get
/usr/bin/apt-key
/usr/bin/apt-mark
/usr/lib
/usr/lib/apt
/usr/lib/apt/methods
/usr/lib/apt/methods/bzip2
/usr/lib/apt/methods/cdrom
/usr/lib/apt/methods/copy
/usr/lib/apt/methods/file
/usr/lib/apt/methods/ftp
/usr/lib/apt/methods/gpgv
/usr/lib/apt/methods/gzip
/usr/lib/apt/methods/http
/usr/lib/apt/methods/lzma
/usr/lib/apt/methods/mirror
/usr/lib/apt/methods/rred
/usr/lib/apt/methods/rsh
/usr/lib/apt/methods/ssh
/usr/lib/apt/apt-report-mirror-failure
/usr/lib/dpkg
/usr/lib/dpkg/methods 
/usr/lib/dpkg/methods/apt
/usr/lib/dpkg/methods/apt/desc.apt
/usr/lib/dpkg/methods/apt/install
/usr/lib/dpkg/methods/apt/names
/usr/lib/dpkg/methods/apt/setup
/usr/lib/dpkg/methods/apt/update
/usr/lib/libapt-pkg-libc6.10-6.so.4.8.1
/usr/share
/usr/share/bug
/usr/share/bug/apt
/usr/share/bug/apt/script
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/apt
/usr/share/apt
/usr/share/apt/ubuntu-archive.gpg
/usr/share/apt/apt-auth-failure.note
/usr/share/locale
/usr/share/locale/ar
/usr/share/locale/ar/LC_MESSAGES
/usr/share/locale/ar/LC_MESSAGES/apt.mo
/usr/share/locale/ar/LC_MESSAGES/libapt-inst1.1.mo
/usr/share/locale/ar/LC_MESSAGES/libapt-pkg4.8.mo
/usr/share/locale/bg

Els fitxers binaris són:

$ dpkg -L apt | grep bin
/usr/bin
/usr/bin/apt-cache
/usr/bin/apt-cdrom
/usr/bin/apt-config
/usr/bin/apt-get
/usr/bin/apt-key
/usr/bin/apt-mark 

i els fitxers de configuració:

$ dpkg -L apt | grep etc
/etc
/etc/apt
/etc/apt/apt.conf.d
/etc/apt/apt.conf.d/01autoremove
/etc/apt/apt.conf.d/01ubuntu
/etc/apt/preferences.d
/etc/apt/sources.list.d
/etc/logrotate.d
/etc/logrotate.d/apt
/etc/cron.daily
/etc/cron.daily/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:

cron

El paquet apt utilitza l'eina cron per tal de dur a terme operacions automàtiques i periòdiques de manteniment:

$ dpkg -L apt | grep cron
/etc/cron.daily
/etc/cron.daily/apt
$ sudo cat /etc/crontab | grep daily

25 6	* * *	root	test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

Com podeu veure daily vol dir cada dia a les 6:25 (o qualsevol temps posterior si en aquest moment la màquina no estava encesa).

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 amor
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:
  libzzip-0-12 memcached php4-common
Use 'apt-get autoremove' to remove them.
Paquets suggerits:
  khelpcenter
Paquets recomanats:
  kwin
S'instal·laran els següents paquets NOUS:
  amor
0 actualitzats, 1 nous a instal·lar, 0 a eliminar i 2 no actualitzats.
Es necessita obtenir 338kB d'arxius.
Després de desempaquetar s'usaran 2142kB d'espai en disc addicional.
Des:1 http://es.archive.ubuntu.com edgy/main amor 4:3.5.5-0ubuntu1 [338kB]
338kB descarregats en 3s (91,5kB/s)
S'està seleccionant el paquet amor prèviament no seleccionat.
(S'està llegint la base de dades ... hi ha 159297 fitxers i directoris instal·lats actualment.)
S'està desempaquetant amor (de .../amor_4%3a3.5.5-0ubuntu1_i386.deb) ...
S'està configurant amor (3.5.5-0ubuntu1) ...

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 amor
S'està llegint la llista de paquets... Fet
S'està construint l'arbre de dependències       
Reading state information... Fet           
Paquets suggerits:
  khelpcenter
Paquets recomanats:
 kwin
S'instal·laran els següents paquets NOUS:
  amor
0 actualitzats, 1 nous a instal·lar, 0 a eliminar i 2 no actualitzats.
Inst amor (4:3.5.5-0ubuntu1 Ubuntu:6.10/edgy)
Conf amor (4:3.5.5-0ubuntu1 Ubuntu:6.10/edgy)

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.
Paquets suggerits:
  khelpcenter
Paquets recomanats:
  kwin

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 amor
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:
  amor
Use 'apt-get autoremove' to remove them.
S'ELIMINARAN els següents paquets:
  amor
0 actualitzats, 0 nous a instal·lar, 1 a eliminar i 2 no actualitzats.
Es necessita obtenir 0B d'arxius.
Després de desempaquetar s'alliberaran 2142kB d'espai en disc.
Voleu continuar [S/n]? s
(S'està llegint la base de dades ... hi ha 159684 fitxers i directoris instal·lats actualment.)
S'està desinstal·lant amor ...

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
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:
libzzip-0-12 memcached php4-common
S'ELIMINARAN els següents paquets:
libzzip-0-12 memcached php4-common
0 actualitzats, 0 nous a instal·lar, 3 a eliminar i 2 no actualitzats.
Es necessita obtenir 0B d'arxius.
Després de desempaquetar s'alliberaran 664kB d'espai en disc.
Voleu continuar [S/n]? s
(S'està llegint la base de dades ... hi ha 159735 fitxers i directoris instal·lats actualment.)
S'està desinstal·lant libzzip-0-12 ...
S'està desinstal·lant memcached ...
Stopping memcached: memcached.
S'està desinstal·lant php4-common ...

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

NOTA: Vegeu do-release-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 upgrade
S'està llegint la llista de paquets... Fet
S'està construint l'arbre de dependències       
S'està llegint la informació de l'estat... Fet
S'han mantingut els paquets següents:
  adobe-flashplugin bind9-host dnsutils libbind9-50 libdns50 libisc50 libisccc50 libisccfg50 liblwres50
S'actualitzaran els paquets següents:
  devicekit-disks gnome-screensaver seahorse-plugins
3 actualitzats, 0 nous a instal·lar, 0 a suprimir i 9 no actualitzats.
1 no instal·lats o suprimits completament.
Es necessita obtenir 4719kB d'arxius.
Després d'aquesta operació s'empraran 0B d'espai en disc addicional.
Voleu continuar [S/n]? n
$ 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ó 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:

$ sudo apt-get autoremove
S'està llegint la llista de paquets... Fet 
S'està construint l'arbre de dependències       
S'està llegint la informació de l'estat... Fet
Es SUPRIMIRAN els paquets següents:
  binutils-static libgdchart-gd2-noxpm
0 actualitzats, 0 nous a instal·lar, 2 a suprimir i 1 no actualitzats.
1 no instal·lats o suprimits completament.
Després d'aquesta operació s'alliberaran 1577kB d'espai en disc.
Voleu continuar [S/n]? s
...

NOTA: Aquesta opció amb l'ordre aptitude no té cap mena de sentit, ja que per defecte aquesta eina esborra aquest tipus de paquets al esborrar el paquet amb dependències

Consulteu també l'opció remove.

opció source

NOTA: 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 
S'està llegint la llista de paquets... Fet 
S'està construint l'arbre de dependències       
S'està llegint la informació de l'estat... Fet
Es necessita baixar 9729kB d'arxius font.
Bai:1 http://ch.archive.ubuntu.com karmic/main coreutils 7.4-2ubuntu1 (dsc) [1244B]
Bai:2 http://ch.archive.ubuntu.com karmic/main coreutils 7.4-2ubuntu1 (tar) [9709kB]
Bai:3 http://ch.archive.ubuntu.com karmic/main coreutils 7.4-2ubuntu1 (diff) [19,2kB]                                                       
9729kB baixats en 11s (815kB/s)                                                                                                             
gpgv: Signature made dt 06 oct 2009 12:24:17 CEST using DSA key ID 5E0577F2
gpgv: No s'ha pogut comprovar la signatura: no s'ha trobat la clau pública
dpkg-source: warning: failed to verify signature on ./coreutils_7.4-2ubuntu1.dsc
dpkg-source: info: extracting coreutils in coreutils-7.4
dpkg-source: info: unpacking coreutils_7.4.orig.tar.gz
dpkg-source: info: applying coreutils_7.4-2ubuntu1.diff.gz

Podem fer que automàticament construeixi (compili) el codi font afegint l'opció -b (build):

$ sudo apt-get -b source coreutils
S'està llegint la llista de paquets... Fet 
S'està construint l'arbre de dependències       
S'està llegint la informació de l'estat... Fet
S'està ometent el fitxer ja baixat «coreutils_7.4-2ubuntu1.dsc»
S'està ometent el fitxer ja baixat «coreutils_7.4.orig.tar.gz»
S'està ometent el fitxer ja baixat «coreutils_7.4-2ubuntu1.diff.gz»
Es necessita baixar 0B d'arxius font.
S'està ometent el desempaquetament de les fonts que ja ho estan en coreutils-7.4
dpkg-buildpackage: set CFLAGS to default value: -g -O2
dpkg-buildpackage: set CPPFLAGS to default value: 
dpkg-buildpackage: set LDFLAGS to default value: -Wl,-Bsymbolic-functions
dpkg-buildpackage: set FFLAGS to default value: -g -O2
dpkg-buildpackage: set CXXFLAGS to default value: -g -O2
dpkg-buildpackage: source package coreutils
dpkg-buildpackage: source version 7.4-2ubuntu1
dpkg-buildpackage: source changed by Martin Pitt <martin.pitt@ubuntu.com>
dpkg-buildpackage: host architecture i386
dpkg-checkbuilddeps: Dependències de construcció no satisfetes: gettext (>= 0.10.37) debhelper dh-buildinfo texinfo (>= 4.2) groff dpatch libattr1-dev | not+linux-gnu   
libacl1-dev | not+linux-gnu libselinux1-dev (>= 1.32) | not+linux-gnu gperf bison
dpkg-buildpackage: warning: Build dependencies/conflicts unsatisfied; aborting.
dpkg-buildpackage: warning: (Use -d flag to override.)
L'ordre de construir «cd coreutils-7.4 && dpkg-buildpackage -b -uc» ha fallat.
E: Ha fallat el procés fill

Si falla és que segurament no disposeu de les dependències. Consulteu l'opció build-dep. Cal fer:

$ sudo apt-get build-dep coreutils

I ara si podeu:

$ sudo apt-get -b source coreutils

Quan acabi us haurà generat un paquet:

coreutils_7.4-2ubuntu1_i386.deb

Que podeu instal·lar amb:

$ sudo dpkg -i coreutils_7.4-2ubuntu1_i386.deb

Opció build-dep

 $ sudo apt-get build-dep coreutils
S'està llegint la llista de paquets... Fet 
S'està construint l'arbre de dependències       
S'està llegint la informació de l'estat... Fet
S'instal·laran els paquets NOUS següents:
  bison cvs debhelper dh-buildinfo dpatch gettext gperf groff html2text imagemagick intltool-debian libacl1-dev libattr1-dev
  libmail-sendmail-perl libselinux1-dev libsepol1-dev libsys-hostname-long-perl m4 patchutils po-debconf psutils texinfo
0 actualitzats, 22 nous a instal·lar, 0 a suprimir i 0 no actualitzats.
Es necessita obtenir 10,2MB d'arxius.
Després d'aquesta operació s'empraran 33,1MB d'espai en disc addicional.
Voleu continuar [S/n]? s

Instal·la tots els paquets necessari per compilar (construir) el codi font del paquet 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

NOTA: Tingueu en compte que mostra tots els paquets possibles no només els instal·lat. Després d'un apt-get update o despres de modificar les fonts de programari aquest número pot canviar

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

Com eliminar completament (purgar) un paquet

apt-get remove --purge package name

Aquesta opció borra tant el paquet com els fitxers de configuració del mateix.

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).

apt-listchanges

TODO

Configuració. Carpeta /etc/apt

TODO

/etc/apt/apt.conf.d/

TODO



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

Script per automatitzar els avisos quan hi ha novetats paquets per instal·lar

#!/bin/bash
# script que mira si hi han actualitzacions i si n'hi ha
# envia un correu
HOSTNAME="Informe del servidor"
MAIL_FROM="elmeucorreu@domini.com"
#mirem si hi ha actualitzacions
if [ "$1" = "-v" ]
then
echo "Busquem actualitzacions al sistema..."
/usr/bin/apt-get update
echo "Mirem si actualitzariem algo..."
else
/usr/bin/apt-get update 1> /dev/null
fi
tmp=$( apt-get upgrade -s | grep '0 upgraded')
#si n'hi han enviem un mail amb els paquets a actualitzar
if [ ! -n "$tmp" ]
then
if [ "$1" = "-v" ]
then
echo "Enviant mail..."
fi
echo "$(apt-get upgrade -s)" | /usr/bin/mail -s "[$HOSTNAME]" $MAIL_FROM
else
if [ "$1" = "-v" ]
then
echo "Res a actualitzar!"
fi
fi 

Recursos:

apt a OpenSuse

No el porta per defecte però es pot instal·lar, per exemple amb zypper:

$ sudo zypper install apt

Recursos:

python-software-properties

$ sudo apt-get install python-software-properties

Fitxers binaris:

$ dpkg -L python-software-properties | grep bin
/usr/bin
/usr/bin/add-apt-repository

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/ ./"

IMPORTANT: 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

apt pinning

TODO:

aptitude hold --> No em funciona!

This wiki page will discuss some advanced things you can do to packages to accomplish specific goals. The first thing described is Pinning, this is useful if you want only some things from a newer version of Ubuntu. There is also package holding, which allows you to not update the package.

Introduction to Pinning

Pinning is a process that allows you to remain on a stable release of Ubuntu (or any other debian system) while grabbing packages from a more recent version.

Note however that the processes described below will only work if things like libc6 versions match, so you should probably not do this on an Ubuntu system. I strongly recommend you look at UbuntuBackports before doing this.

Pinning Methods

There are 3 main files you must edit for pinning to even function.

It is important to start out by setting your default release to avoid accidentally upgrading all packages, by editing /etc/apt/apt.conf [in intrepid that is /etc/apt/apt.conf.d/01ubuntu, "intrepid" rather than "hardy"] as follows:

APT::Default-Release "hardy";

The second file is:

/etc/apt/sources.list

An example configuration is as follows:

  1. official ubuntu sites
        1. testing #########

deb http://archive.ubuntu.com/ubuntu hardy main restricted universe multiverse

        1. development #########

deb http://archive.ubuntu.com/ubuntu intrepid main restricted universe multiverse

In this example, we're pulling from hardy and intrepid (the current development version of Ubuntu).

The next file involved is:

/etc/apt/preferences

The 'preferences' file is where the actual pinning takes place. To pin a package, set its Pin-Priority to higher number. Here's an example:

Package: firefox-3.0 Pin: release a=hardy Pin-Priority: -10

Package: firefox-3.0 Pin: release a=intrepid Pin-Priority: 900

In this example, we're giving a higher priority to Firefox from intrepid because we want rc1 instead of beta5. This of course can be done with any package, or even all packages - although in the above example, you likely want to change hardy and intrepid Pin-Priority values around so that hardy is default. For further information please read: man apt_preferences

Debugging Package Priorities

To print out the priorities of each source, run apt-cache policy. For priorities for packages, run apt-cache policy packagename[s].

Recommended alternative to pinning

In Ubuntu, most times, the libc6 version is updated from version to version - it is not the purpose of this page to describe what libc6 is, but needless to say it breaks the above example.

A better method for grabbing things from a development version while not committing your entire machine to that version is as follows:

Add the following line to /etc/apt/sources.list

deb-src http://archive.ubuntu.com/ubuntu intrepid main restricted universe multiverse

Then you'll need to update your repos:

sudo apt-get update

Now we need to install some packages so we can build the desired software in intrepid:

sudo apt-get build-dep firefox-3.0

Now we can do the following to get the package built from intrepid on our hardy machine:

sudo apt-get -b source -t intrepid firefox-3.0

It will output lots of info on the screen, when it's done (could take a while), you will have rc1 instead of beta5!

Introduction to Holding Packages

Holding a package basically means you're telling the package manager to keep the current version no matter what. This is useful if more recent version of a currently working program breaks after an update.

The following will describe the process of actually holding the package, there are several options to accomplish this:

Synaptic

   *
     lockver.png

First way to hold a package is in Synaptic:

   *
     Open Synaptic: System -> Administration -> Synaptic Package Manager
   * Click Search and type the package's name in the Search box
   *
     Highlight the version you want to pin Make sure that you select the correct version
   *
     Once the correct package is selected, Click Package -> Lock Version
   * Close Synaptic 


Apt/Dpkg

Second way is to hold it with Apt/Dpkg:

   * Open a terminal
   * sudo -s and hit enter
   * Enter your password for sudo
     echo libxfont1 hold | dpkg --set-selections
     Replace libxfont1 with the package you want to pin
   * Now run sudo apt-get update and then sudo apt-get upgrade 

Removing a Hold

To remove a package from hold, you can run "sudo apt-get install libxfont1" (replacing libxfont1 with the package you wish to remove). To see what the next version of the package is, use apt-cache policy packagename (see Debugging Package Priorities above).

Synaptic

To remove the pin in Synaptic:

   * Open Synaptic
   * Search for the correct package
   * Click on package to highlight it
   *
     Once the correct package is selected, Click Package -> Lock Version to remove the checkmark
   * Close Synaptic 

Apt/Dpkg

To remove pin from Apt/Dpkg:

   * Open a terminal
   * sudo -s and hit enter
   * Enter your password for sudo
   *
     echo libxfont1 install | dpkg --set-selections
     Replace libxfont1 with the package you want to pin
   * Now run sudo apt-get update and then sudo apt-get upgrade 

NOTE At the time of the making this Wiki there is not a known way to Pin a package with Update Manager.

Pinning should never be used for installing Debian binary packages on Ubuntu. Ubuntu strongly recommends against using Debian binary packages on Ubuntu,

Karmic Example

Pinning the ubuntu-mozilla-daily PPA

"I regularly use a package from the Ubuntu Daily Mozilla PPA. Unfortunately the PPA also contains snapshot builds of Firefox 3.5 and XulRunner 1.9.1, which I want to keep at their standard Ubuntu versions".

The Pinning Solution

To make apt-get upgrading as painless as possible set a lower Pin-Priority on the PPA, this will stop unwanted package versions from installing. Once set, packages from the ubuntu-mozilla-daily PPA will always lose in any contest with packages from other repositories, even if they have a higher version.

Create the file:

  1. /etc/apt/preferences.d/ubuntu-mozilla-daily-pin-400
  2. Add the following to the file:
         * Code: 
     Package: *
     Pin: release o=LP-PPA-ubuntu-mozilla-daily
     Pin-Priority: 400

Use the following commands, before and after, to check that the Pin-Priority has been updated.

apt-cache policy

apt-cache policy firefox-3.5

Make sure the file name does not have a dot in it!

Links

These documents were used as a foundation for this page, and might give you more background information:

   *
     For Basic apt-get usage and instructions see AptGetHowTo
   *
     The official Debian documentation

Bloquejar un paquet a una versió concreta

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

Com mantenir (hold) un paquet

Amb apt

$ sudo bash -c "echo NOM_DEL_PAQUET hold | dpkg --set-selections"
$ sudo apt-get update && sudo apt-get upgrade

Per esborrar el hold:

$ sudo bash -c "echo NOM_DEL_PAQUET install | dpkg --set-selections"
$ sudo apt-get update && sudo apt-get upgrade

Amb Synaptic

Es pot fer al Menú Paquet (Package), mantenir versió un cop s'ha seleccionat un paquet

IMPORTANT: Si bloquejeu l'actualització del paquet per Synaptic aleshores només no s'actualitza el paquet al fer una actualització del sistema si esta la feu per synaptic

Amb aptitude

NOTA: no m'ha funcionat si es fa el hold amb aptitude aleshores cal fer els upgrades també amb aptitude ($sudo aptitude safe-upgrade). Aleshores si que funciona

Mantenir un paquet (en anglès hold) vol dir que marquem el paquet per tal que no sigui actualitzar (estat h). Es pot fer amb [[[aptitude]]:

$ sudo aptitude hold package_name

Per treure'l de l'estat hold:

$ sudo aptitude unhold package_name

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:

NOTA: 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.

NOTA: 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

Podeu consultar els fitxers proporcionats per dpkg amb la pròpia ordre dpkg:

$ dpkg -L dpkg

El fitxers més importants són els executables:

$ dpkg -L dpkg | grep bin
/usr/bin
/usr/bin/dpkg
/usr/bin/dpkg-deb
/usr/bin/dpkg-divert
/usr/bin/dpkg-query
/usr/bin/dpkg-split
/usr/bin/dpkg-statoverride
/usr/bin/dpkg-trigger
/usr/bin/update-alternatives
/usr/sbin
/usr/sbin/install-info
/sbin
/sbin/start-stop-daemon
/usr/sbin/update-alternatives
/usr/sbin/dpkg-statoverride
/usr/sbin/dpkg-divert

I els fitxers de configuració:

$ dpkg -L dpkg | grep etc
/etc
/etc/dpkg
/etc/dpkg/dpkg.cfg
/etc/dpkg/dpkg.cfg.d
/etc/alternatives
/etc/alternatives/README
/etc/cron.daily
/etc/cron.daily/dpkg
/etc/logrotate.d
/etc/logrotate.d/dpkg

Dpkg-deb ens proporciona les eines per crear paquets però aquest tema esta fora de l'àmbit d'aquest article (consulteu Creació de paquets Debian).

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.

El frontend per defecte es pot configurar amb:

$ sudo dpkg-reconfigure debconf
Debconf-reconfigure.png
Debconf-reconfigure1.png

La llista de prioritats possibles es pot consultar al manual de debconf:

$ man debconf

Consulteu:

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.
...

dpkg-trigger

$ man dpkg-trigger
dpkg-trigger(1)                                                                  dpkg suite                                                                  dpkg-trigger(1)

NAME
      dpkg-trigger - a package trigger utility

SYNOPSIS
      dpkg-trigger [option...] trigger-name
      dpkg-trigger [option...] command

DESCRIPTION
      dpkg-trigger is a tool to explicitly activate triggers and check for its support on the running dpkg.

      This  can  be  used by maintainer scripts in complex and conditional situations where the file triggers, or the declarative activate triggers control file directive,
      are insufficiently rich. It can also be used for testing and by system administrators (but note that the triggers won't actually be run by dpkg-trigger).

      Unrecognised trigger name syntaxes are an error for dpkg-trigger.

COMMANDS
      --check-supported
             Check if the running dpkg supports triggers (usually called from a postinst). Will exit 0 if a triggers-capable dpkg has run, or 1 with an  error  message  to
             stderr if not. Normally, however, it is better just to activate the desired trigger with dpkg-trigger.

      -h, --help
             Show the usage message and exit.

      --version
             Show the version and exit.

OPTIONS
      --admindir=dir
             Change the location of the dpkg database. The default location is /var/lib/dpkg.

      --by-package=package
             Override  trigger  awaiter  (normally  set  by dpkg through the DPKG_MAINTSCRIPT_PACKAGE environment variable of the maintainer scripts, naming the package to
             which the script belongs, and this will be used by default).

      --no-await
             This option arranges that the calling package T (if any) need not await the processing of this trigger; the interested package(s) I, will not be added to  T's
             trigger processing awaited list and T's status is unchanged.  T may be considered installed even though I may not yet have processed the trigger.

      --no-act
             Just test, do not actually change anything.

SEE ALSO
      dpkg(1), deb-triggers(5), /usr/share/doc/dpkg-dev/triggers.txt.gz.

Debian Project                                                                   2009-03-15                                                                  dpkg-trigger(1)

Vegeu també:

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:

Dpkg#Interpretaci.C3.B3_dels_resultats_de_les_comandes_de_query

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

NOTA: 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

NOTA: 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

IMPORTANT: Cal fixar-se que apareguin els caràcters ii que indiquen que el paquet està instal·lat.

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

NOTA: 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

IMPORTANT: podeu fer quelcom similar amb debconf amb el paquet debconf-utils i l'ordre debcong-get-selections

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;

Vegeu també

Enllaços externs