dpkg
El comando dpkg es la herramienta de bajo nivel utilizada en distribuciones Linux basadas en Debian (como Debian, Ubuntu y sus derivadas) para instalar, configurar, consultar y eliminar paquetes de software en formato .deb. A diferencia de apt o apt-get, dpkg trabaja directamente con los paquetes locales y no gestiona automáticamente las dependencias necesarias desde los repositorios.
| Categoría | Sistema y software |
|---|---|
| Disponible en | Linux (Debian / Ubuntu / derivadas) |
| Equivalente en Windows | msiexec, instaladores .msi y herramientas de gestión de paquetes como winget |
| Sustituye a | No sustituye a apt o apt-get; es la herramienta de bajo nivel sobre la que estos gestores realizan parte de sus operaciones. |
| ¿Requiere permisos de administrador? | Sí, las operaciones que modifican el sistema (instalar, configurar o eliminar paquetes) requieren privilegios de superusuario mediante sudo. |
¿Qué significa su nombre?
DPKG procede de Debian Package y hace referencia al sistema de gestión de paquetes desarrollado originalmente para la distribución Debian.
El nombre está relacionado con los paquetes de software utilizados por Debian, cuyo formato habitual es .deb.
¿Para qué sirve?
El comando dpkg permite trabajar directamente con paquetes Debian. Se utiliza principalmente para instalar paquetes .deb descargados manualmente, eliminarlos, configurarlos y consultar información sobre los paquetes instalados en el sistema.
Una diferencia fundamental respecto a apt y apt-get es que dpkg no descarga automáticamente las dependencias necesarias desde los repositorios. Por este motivo, para instalar software procedente de los repositorios se suele utilizar apt, mientras que dpkg resulta especialmente útil cuando se dispone directamente de un archivo .deb.
Además, dpkg mantiene una base de datos local con información sobre los paquetes instalados, su estado, versión, arquitectura y archivos asociados.
Sintaxis
dpkg [opción] [paquete]
Las opciones más habituales son:
| Opción | Descripción |
|---|---|
-i / --install |
Instala un paquete .deb local. |
-r / --remove |
Elimina un paquete instalado, conservando normalmente sus archivos de configuración. |
-P / --purge |
Elimina un paquete junto con sus archivos de configuración. |
-l / --list |
Lista los paquetes conocidos por la base de datos de dpkg. |
-s / --status |
Muestra información sobre el estado de un paquete. |
-L / --listfiles |
Muestra los archivos instalados por un paquete. |
-S / --search |
Busca a qué paquete pertenece un archivo instalado en el sistema. |
-c / --contents |
Muestra el contenido de un archivo .deb sin instalarlo. |
--unpack |
Desempaqueta los archivos de un paquete sin completar necesariamente su configuración. |
--configure |
Configura un paquete que ha sido desempaquetado pero todavía no ha sido configurado. |
Comandos más utilizados
| Comando | Descripción |
|---|---|
dpkg -i [paquete.deb] |
Instala un paquete local en formato .deb. |
dpkg -l |
Muestra una lista de los paquetes registrados en la base de datos local. |
dpkg -l [paquete] |
Comprueba el estado de un paquete concreto. |
dpkg -s [paquete] |
Muestra información detallada sobre un paquete instalado. |
dpkg -L [paquete] |
Muestra todos los archivos instalados por un paquete. |
dpkg -S [archivo] |
Indica qué paquete instaló un determinado archivo. |
dpkg -r [paquete] |
Desinstala un paquete manteniendo sus archivos de configuración. |
dpkg -P [paquete] |
Desinstala un paquete y elimina sus archivos de configuración. |
Equivalencia con otros sistemas
| Acción | dpkg | APT | Windows |
|---|---|---|---|
| Instalar paquete local | dpkg -i paquete.deb |
apt install ./paquete.deb |
msiexec /i programa.msi |
| Consultar paquete instalado | dpkg -s paquete |
apt show paquete |
Información de aplicaciones / winget list |
| Listar archivos instalados | dpkg -L paquete |
dpkg -L paquete |
Depende del instalador |
| Desinstalar programa | dpkg -r paquete |
apt remove paquete |
winget uninstall programa |
| Eliminar programa y configuración | dpkg -P paquete |
apt purge paquete |
Desinstalador del programa |
Ejemplos
Comprobar si htop está instalado
dpkg -l htop
Mostrar información detallada de htop
dpkg -s htop
Mostrar los archivos instalados por htop
dpkg -L htop
Instalar un paquete descargado manualmente
sudo dpkg -i paquete.deb
Desinstalar un paquete
sudo dpkg -r paquete
Desinstalar un paquete eliminando también su configuración
sudo dpkg -P paquete
Ejemplo de salida
$ dpkg -l htop
Deseado=Desconocido/Instalar/Eliminar/Purgar/Retener
| Estado=No/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Estado,Err: mayúsc.=malo)
||/ Nombre Versión Arquitectura Descripción
+++-============-=============-=============-===============================
ii htop 3.2.2-2 amd64 interactive processes viewer
¿Cómo interpretar la salida?
- Las dos primeras letras
ii: indican que el paquete está instalado y que su configuración se ha completado correctamente. - Nombre: identifica el nombre del paquete, en este caso
htop. - Versión: muestra la versión concreta del paquete instalada en el sistema.
- Arquitectura: indica para qué arquitectura está construido el paquete, por ejemplo
amd64para sistemas x86-64. - Descripción: proporciona una breve descripción de la función del paquete.
Los dos primeros caracteres de la salida de dpkg -l representan el estado deseado y el estado actual del paquete. Por ejemplo, ii indica que se desea instalar el paquete y que actualmente está instalado correctamente.
Errores habituales
- Intentar instalar un paquete
.debcondpkg -isin tener instaladas sus dependencias.dpkgno resuelve automáticamente estas dependencias desde los repositorios. - Confundir el nombre del archivo
.debcon el nombre del paquete. Para instalar se utiliza el nombre del archivo, mientras que para consultar un paquete instalado se utiliza normalmente el nombre del paquete. - Olvidar utilizar
sudoal realizar operaciones que modifican paquetes del sistema. - Intentar eliminar manualmente archivos pertenecientes a un paquete en lugar de utilizar
dpkgoapt, lo que puede dejar inconsistente la base de datos de paquetes. - Intentar instalar un paquete con dependencias incumplidas y asumir que
dpkglas descargará automáticamente. En estos casos puede ser necesario utilizarsudo apt install -fpara resolver las dependencias pendientes.
Conceptos relacionados
- Gestor de paquetes
- Paquete
.deb - Dependencias
- Repositorio de software
- Base de datos de paquetes
- APT
- Instalación de software
Comandos relacionados
aptapt-getapt-cacheapt installdpkg-reconfigureapt-filewinget
Curiosidades
dpkg es una herramienta de nivel inferior a apt. Cuando utilizamos comandos como sudo apt install paquete, APT se encarga de resolver las dependencias, descargar los archivos necesarios y coordinar la instalación, mientras que dpkg realiza las operaciones de instalación y configuración de los paquetes .deb.
Otra característica interesante es que dpkg mantiene una base de datos local situada en /var/lib/dpkg. Esta base de datos permite al sistema conocer qué paquetes están instalados, qué versión tienen y cuál es su estado.
El formato .deb utilizado por Debian es un paquete que contiene, entre otros elementos, los archivos necesarios para instalar el software y metadatos con información sobre el paquete y sus dependencias.
Prácticas propuestas
- Ejecuta
dpkg -ly observa la cantidad de paquetes registrados en el sistema. Utilizadpkg -l | lesspara recorrer la lista cómodamente. - Comprueba si
htopestá instalado mediantedpkg -l htop. Interpreta los dos primeros caracteres que aparecen en la columna de estado. - Ejecuta
dpkg -s htopy localiza en la salida el nombre, versión, arquitectura y descripción del paquete. - Utiliza
dpkg -L htoppara averiguar qué archivos instala el paquetehtop. Identifica la ubicación del ejecutable. - Utiliza
dpkg -S /usr/bin/htoppara comprobar qué paquete es el responsable de instalar el ejecutable dehtop. - Descarga un paquete
.debde una fuente de confianza y analiza su contenido condpkg --info paquete.debydpkg -c paquete.debsin instalarlo. - Instala un paquete
.debmediantesudo dpkg -i paquete.deb. Si aparecen dependencias incumplidas, utiliza posteriormentesudo apt install -fy analiza qué ocurre. - Compara la instalación de un paquete
.debutilizandodpkg -icon la instalación mediantesudo apt install ./paquete.deb. ¿Qué diferencias observas en la gestión de dependencias?
Consejo: Utiliza dpkg cuando necesites trabajar directamente con paquetes .deb o consultar información detallada sobre los paquetes instalados. Para instalar software desde los repositorios, normalmente es preferible utilizar apt, ya que gestiona automáticamente las dependencias.
Preguntas de reflexión:
- ¿Qué diferencia fundamental existe entre
dpkgyapta la hora de instalar software? - ¿Por qué
dpkg -i paquete.debpuede producir errores relacionados con dependencias? - ¿Qué información proporciona
dpkg -s paquetey para qué puede resultar útil? - ¿Qué diferencia existe entre
dpkg -rydpkg -P? - ¿Qué información proporcionan los dos primeros caracteres que aparecen al ejecutar
dpkg -l? - ¿Qué relación existe entre un archivo
.deb,dpkgyapt?
Haz clic aquí para ver las soluciones y explicaciones
1. ¿Qué diferencia fundamental existe entre dpkg y apt a la hora de instalar software?
dpkg es una herramienta de bajo nivel que trabaja directamente con paquetes .deb. Puede instalar, configurar, consultar y eliminar estos paquetes, pero no se encarga de resolver automáticamente sus dependencias descargándolas desde los repositorios. Por su parte, apt es una herramienta de nivel superior que utiliza la infraestructura de dpkg y añade funcionalidades como la búsqueda de paquetes, la descarga desde repositorios y la resolución automática de dependencias.
2. ¿Por qué dpkg -i paquete.deb puede producir errores relacionados con dependencias?
Porque dpkg instala el paquete local que se le proporciona, pero no descarga automáticamente desde los repositorios los paquetes adicionales que sean necesarios. Si el paquete necesita determinadas librerías o programas que no están instalados, la instalación puede quedar incompleta hasta que se satisfagan esas dependencias. Una forma habitual de solucionar la situación es utilizar sudo apt install -f, que permite a APT corregir las dependencias pendientes.
3. ¿Qué información proporciona dpkg -s paquete y para qué puede resultar útil?
El comando muestra información almacenada en la base de datos local de dpkg sobre un paquete instalado. Puede incluir su nombre, versión, arquitectura, estado, descripción, dependencias y otros metadatos. Resulta especialmente útil para comprobar exactamente qué versión de un programa está instalada y conocer cómo está registrado en el sistema.
4. ¿Qué diferencia existe entre dpkg -r y dpkg -P?
dpkg -r elimina el paquete, pero normalmente conserva sus archivos de configuración. Esto permite mantener determinadas preferencias si el paquete se vuelve a instalar posteriormente. dpkg -P, en cambio, realiza una purga y elimina también los archivos de configuración gestionados por el paquete.
5. ¿Qué información proporcionan los dos primeros caracteres que aparecen al ejecutar dpkg -l?
Los dos primeros caracteres representan el estado deseado y el estado actual del paquete. El primer carácter indica la acción que se desea realizar con el paquete y el segundo refleja su estado actual. Por ejemplo, ii significa que el paquete está marcado para instalarse y que actualmente está instalado correctamente.
6. ¿Qué relación existe entre un archivo .deb, dpkg y apt?
Un archivo .deb es un paquete de software utilizado por Debian y sus distribuciones derivadas. dpkg es la herramienta de bajo nivel que puede instalar y gestionar directamente esos paquetes. apt trabaja en un nivel superior: localiza los paquetes en repositorios, descarga los archivos necesarios, resuelve las dependencias y utiliza las herramientas de Debian, incluido dpkg, para completar las operaciones de instalación y configuración.