-->

Comando dpkg

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 amd64 para 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 .deb con dpkg -i sin tener instaladas sus dependencias. dpkg no resuelve automáticamente estas dependencias desde los repositorios.
  • Confundir el nombre del archivo .deb con 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 sudo al realizar operaciones que modifican paquetes del sistema.
  • Intentar eliminar manualmente archivos pertenecientes a un paquete en lugar de utilizar dpkg o apt, lo que puede dejar inconsistente la base de datos de paquetes.
  • Intentar instalar un paquete con dependencias incumplidas y asumir que dpkg las descargará automáticamente. En estos casos puede ser necesario utilizar sudo apt install -f para 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

  • apt
  • apt-get
  • apt-cache
  • apt install
  • dpkg-reconfigure
  • apt-file
  • winget

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

  1. Ejecuta dpkg -l y observa la cantidad de paquetes registrados en el sistema. Utiliza dpkg -l | less para recorrer la lista cómodamente.
  2. Comprueba si htop está instalado mediante dpkg -l htop. Interpreta los dos primeros caracteres que aparecen en la columna de estado.
  3. Ejecuta dpkg -s htop y localiza en la salida el nombre, versión, arquitectura y descripción del paquete.
  4. Utiliza dpkg -L htop para averiguar qué archivos instala el paquete htop. Identifica la ubicación del ejecutable.
  5. Utiliza dpkg -S /usr/bin/htop para comprobar qué paquete es el responsable de instalar el ejecutable de htop.
  6. Descarga un paquete .deb de una fuente de confianza y analiza su contenido con dpkg --info paquete.deb y dpkg -c paquete.deb sin instalarlo.
  7. Instala un paquete .deb mediante sudo dpkg -i paquete.deb. Si aparecen dependencias incumplidas, utiliza posteriormente sudo apt install -f y analiza qué ocurre.
  8. Compara la instalación de un paquete .deb utilizando dpkg -i con la instalación mediante sudo 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:

  1. ¿Qué diferencia fundamental existe entre dpkg y apt a la hora de instalar software?
  2. ¿Por qué dpkg -i paquete.deb puede producir errores relacionados con dependencias?
  3. ¿Qué información proporciona dpkg -s paquete y para qué puede resultar útil?
  4. ¿Qué diferencia existe entre dpkg -r y dpkg -P?
  5. ¿Qué información proporcionan los dos primeros caracteres que aparecen al ejecutar dpkg -l?
  6. ¿Qué relación existe entre un archivo .deb, dpkg y apt?
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.