La comanda dpkg a Linux: instal·lar i consultar paquets .deb
La comanda dpkg (Debian package) és l’eina de baix nivell que instal·la, esborra i consulta paquets .deb a Debian, Ubuntu, Raspberry Pi OS, Linux Mint i la resta de derivades. És la base sobre la qual funciona apt: quan fas apt install, és apt qui descarrega els paquets i en resol les dependències, però és dpkg qui els instal·la.
La diferència clau, doncs, és que dpkg no descarrega res ni resol dependències: treballa amb fitxers .deb que ja tens i amb la base de dades de paquets instal·lats (/var/lib/dpkg/). Per instal·lar programes, el dia a dia es fa amb apt; dpkg és molt útil per consultar què hi ha instal·lat i d’on surt cada fitxer.
Sintaxi
dpkg [opcions] acció [paquet o fitxer...] Les accions que modifiquen el sistema (-i, -r, -P, --configure) necessiten sudo. Les consultes (-l, -s, -L, -S) no.
Accions més útils
| Acció | Què fa |
|---|---|
-i fitxer.deb | Instal·la un fitxer .deb |
-r paquet | Esborra un paquet, però en conserva els fitxers de configuració |
-P paquet | Esborra un paquet i també la seva configuració (purge) |
-l [patró] | Llista els paquets (tots, o els que coincideixen amb el patró) |
-s paquet | Estat i informació d’un paquet instal·lat |
-L paquet | Fitxers que ha instal·lat un paquet |
-S fitxer | Quin paquet ha instal·lat un fitxer |
-I fitxer.deb | Informació d’un fitxer .deb sense instal·lar-lo |
-c fitxer.deb | Contingut d’un fitxer .deb |
-x fitxer.deb dir | Extreu els fitxers d’un .deb en un directori, sense instal·lar-lo |
--configure -a | Acaba de configurar els paquets que han quedat a mig instal·lar |
--audit | Busca paquets que han quedat en un estat incorrecte |
--print-architecture | Arquitectura dels paquets del sistema (amd64, arm64…) |
Consultar paquets instal·lats
Llistar paquets. Les dues primeres lletres indiquen l’estat: ii vol dir instal·lat correctament i rc, esborrat però amb la configuració encara al disc:
$ dpkg -l bash coreutils
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-==============-============-============-=================================
ii bash 5.2.37-2+b9 arm64 GNU Bourne Again SHell
ii coreutils 9.7-3 arm64 GNU core utilities Buscar un paquet entre els instal·lats i comptar-los:
dpkg -l | grep apache2
dpkg -l | grep -c '^ii' Saber si un paquet és instal·lat i quina versió té. dpkg -s torna el codi de sortida 0 si el paquet hi és i 1 si no, cosa útil als scripts:
$ dpkg -s nano
Package: nano
Status: install ok installed
Priority: important
Section: editors
Installed-Size: 2867
Maintainer: Jordi Mallach <jordi@debian.org>
Architecture: arm64
Version: 8.4-1+deb13u1
Depends: libc6 (>= 2.38), libncursesw6 (>= 6), libtinfo6 (>= 6)
...
$ dpkg -s tree
dpkg-query: package 'tree' is not installed and no information is available Quins fitxers ha instal·lat un paquet:
$ dpkg -L nano | head -5
/.
/etc
/etc/nanorc
/usr
/usr/bin I al revés, de quin paquet ve un fitxer (molt útil per saber d’on surt una comanda):
$ dpkg -S /usr/bin/ls
coreutils: /usr/bin/ls Paquets esborrats que encara tenen la configuració al disc (es poden netejar amb sudo apt purge paquet):
dpkg -l | grep '^rc' Consultar un fitxer .deb abans d’instal·lar-lo
$ dpkg -I tree_2.2.1-1_arm64.deb
new Debian package, version 2.0.
...
Package: tree
Version: 2.2.1-1
Architecture: arm64
Depends: libc6 (>= 2.38)
...
$ dpkg -c tree_2.2.1-1_arm64.deb
drwxr-xr-x root/root 0 2024-11-26 21:06 ./
drwxr-xr-x root/root 0 2024-11-26 21:06 ./usr/
drwxr-xr-x root/root 0 2024-11-26 21:06 ./usr/bin/
-rwxr-xr-x root/root 134784 2024-11-26 21:06 ./usr/bin/tree
... Si només vols un fitxer del paquet, extreu-lo en un directori qualsevol (no instal·la res ni necessita sudo):
dpkg -x tree_2.2.1-1_arm64.deb /tmp/tree-deb Per descarregar el .deb d’un paquet dels repositoris sense instal·lar-lo: apt download tree.
Instal·lar i esborrar
Instal·lar un .deb descarregat:
sudo dpkg -i programa_1.0_amd64.deb Si el paquet necessita altres paquets que no tens, dpkg el deixa a mig configurar i et diu quines dependències falten. Per això, per instal·lar un .deb descarregat és millor fer servir apt, que busca les dependències als repositoris (fixa’t en el ./, que indica que és un fitxer i no un nom de paquet):
sudo apt install ./programa_1.0_amd64.deb Si ja l’has instal·lat amb dpkg -i i han faltat dependències, sudo apt -f install les instal·la i acaba la feina.
Esborrar un paquet (pel nom del paquet, no del fitxer):
sudo dpkg -r programa # conserva la configuració de /etc
sudo dpkg -P programa # l'esborra tot Igual que abans, és més segur sudo apt remove o sudo apt purge, que també t’avisen de què més s’esborraria.
Reparar una instal·lació interrompuda
Si una actualització es talla (s’ha penjat, s’ha tancat el terminal, s’ha quedat sense corrent), en el pròxim apt veuràs un missatge que et demana executar dpkg --configure -a:
sudo dpkg --configure -a
sudo apt -f install Reconfigurar un paquet
Alguns paquets fan preguntes en instal·lar-se (la zona horària, el teclat, els idiomes…). Per tornar a respondre-les es fa servir una comanda diferent, dpkg-reconfigure:
sudo dpkg-reconfigure tzdata
sudo dpkg-reconfigure locales Compte amb…
--force-…: opcions com--force-dependso--force-overwriteet deixen saltar les comprovacions, i són la manera més ràpida de deixar el sistema de paquets trencat. Fes-les servir només si saps exactament per què.- Paquets
.debde webs de tercers: s’instal·len amb permisos derooti els seus scripts poden fer qualsevol cosa al sistema. Instal·la només els de fonts de confiança. - No barregis distribucions: un
.debcompilat per a una altra versió de Debian o Ubuntu pot trencar dependències.
Comandes relacionades
apt: el gestor de paquets d’alt nivell, que descarrega i resol dependències.apt-get: la versió clàssica d’apt, recomanada als scripts.dpkg-query: consultes amb format personalitzat.- Els paquets que ocupen més espai amb dpkg-query: ordenar els paquets per mida.
- La comanda rpm: l’equivalent a Red Hat, Fedora i derivades.
- La gestió de paquets a Linux: visió general.
Esta web usa cookies.