dpkg vs apt vs apt-get: diferencias reales y cuándo usar cada uno

Última actualización: 27/02/2026
Autor: Isaac
  • dpkg es el gestor de paquetes de bajo nivel que instala y elimina archivos .deb locales sin resolver dependencias.
  • APT actúa como capa de alto nivel sobre dpkg, gestionando repositorios, caché y resolución automática de dependencias.
  • apt, apt-get y aptitude son diferentes frontends de APT, pensados para usos distintos: usuario final, scripting y gestión avanzada.
  • Elegir la herramienta adecuada según el contexto simplifica la administración y reduce errores en sistemas Debian y derivados.

Gestores de paquetes dpkg apt y apt-get

En las distribuciones basadas en Debian (como Ubuntu, Linux Mint o Devuan) es muy habitual que surja la duda de qué diferencia hay entre usar dpkg, apt, apt-get o incluso aptitude. A primera vista parecen hacer lo mismo: instalar, actualizar y borrar programas. Sin embargo, cada uno juega un papel distinto dentro del ecosistema de paquetes y entenderlo te ahorra muchos quebraderos de cabeza.

En este artículo vamos a desgranar con calma cómo funciona dpkg como gestor de bajo nivel, qué aporta APT como capa superior, en qué se diferencian apt, apt-get y aptitude, y qué comandos básicos te conviene dominar en cada caso. La idea es que, al terminar de leer, tengas claro cuándo usar cada herramienta y por qué, tanto en el día a día como en tareas más avanzadas o en scripts.

La base de todo: dpkg, el gestor de paquetes de bajo nivel

El pilar sobre el que se apoya todo el sistema de paquetes en Debian es dpkg, el gestor de paquetes nativo que trabaja directamente con archivos .deb. Fue el primer manejador de paquetes de Debian y, a día de hoy, sigue siendo la referencia para todas las distros derivadas. Si procedes de RPM, puedes convertir paquetes con convertir paquetes con Alien para generar .deb instalables con dpkg.

A diferencia de las herramientas de alto nivel, dpkg se encarga únicamente de instalar, desinstalar y consultar paquetes locales .deb. No sabe nada de repositorios remotos, ni descarga paquetes desde Internet ni se ocupa de resolver dependencias por su cuenta. Si instalas algo con dpkg y falta una librería, tendrás que solucionarlo tú manualmente.

Eso convierte a dpkg en una herramienta ideal para gestionar paquetes de forma muy precisa y controlada (por ejemplo, cuando descargas un .deb a mano o cuando construyes tus propios paquetes), pero también implica que tienes que saber exactamente lo que estás haciendo con las dependencias.

El paquete binario que proporciona esta utilidad en Debian incluye, además de dpkg, otras herramientas relacionadas como dpkg-deb, dpkg-split, dpkg-query, dpkg-divert o dpkg-trigger, junto con utilidades auxiliares como update-alternatives o start-stop-daemon. Para tareas de construcción de paquetes existe el paquete separado dpkg-dev, que añade herramientas de compilación.

Listar paquetes y estados con dpkg

Una de las primeras cosas que suele necesitar cualquier administrador es consultar qué paquetes hay instalados en el sistema. Con dpkg se puede hacer de varias formas:

  • dpkg -l: muestra un listado de paquetes con su estado (instalado, borrado, etc.).
  • dpkg -l nombre_paquete: filtra solo para ese paquete y te indica si está instalado o no.
  • dpkg --get-selections: enseña la lista completa de paquetes y su selección actual.
  • dpkg --get-selections paquete: comprueba de forma rápida si un paquete concreto está marcado como instalado, desinstalado, etc.

Un detalle curioso es que dpkg –get-selections también lista paquetes en estado “deinstall”. Estos son paquetes que se han desinstalado pero que todavía conservan ficheros de configuración o metadatos en el sistema. Más adelante veremos cómo esto se refleja de forma diferente cuando se consulta con APT.

Instalar, quitar y purgar paquetes con dpkg

Para trabajar directamente con un archivo .deb descargado, dpkg dispone de comandos muy claros para instalar y desinstalar paquetes concretos sin pasar por repositorios:

  • dpkg -i paquete.deb: instala el paquete indicado (install).
  • dpkg -r nombre_paquete: elimina el paquete pero deja sus archivos de configuración (remove).
  • dpkg -P nombre_paquete: realiza una purga completa, borrando también los ficheros de configuración asociados (purge).

Cuando se usa la opción -P en lugar de -r se limpian tanto los binarios como los conffiles, algo muy útil si quieres dejar el sistema como si nunca hubieras instalado esa aplicación. Lo que no hará dpkg, insistimos, es remover automáticamente dependencias que solo se instalaron para ese paquete, eso tendrás que gestionarlo tú o apoyarte en APT.

Consultar información y contenido de paquetes .deb

Otra función interesante es poder inspeccionar qué contiene un paquete .deb o qué metadatos lleva. Para eso entra en juego la utilidad dpkg-deb, incluida en el propio paquete dpkg:

  • dpkg-deb -I paquete.deb: muestra información detallada del paquete (nombre, versión, dependencias, mantenedor, etc.).
  • dpkg-deb --contents paquete.deb: lista todos los archivos que se instalarían en el sistema al instalar ese .deb.

Estas opciones son muy prácticas cuando necesitas auditar qué va a hacer exactamente un paquete en tu sistema o cuando depuras problemas de rutas y archivos instalados por un .deb concreto.

APT: la capa de alto nivel sobre dpkg

Por encima de dpkg se construyó APT (Advanced Package Tool), que es una colección de librerías y utilidades que añaden resolución de dependencias y gestión de repositorios. En lugar de hablar directamente con archivos .deb, la mayoría de usuarios interactúa con esta capa, que a su vez llama a dpkg para las operaciones de bajo nivel.

  VirtualBox usa demasiada CPU: causas reales y soluciones probadas

APT está escrito en gran parte como una biblioteca en C++ que ofrece funciones para manipular la base de datos de paquetes, versiones, orígenes y relaciones. Sobre esta biblioteca se apoyan varios frontends de línea de comandos: apt-get, apt-cache, apt y también herramientas externas como aptitude o interfaces gráficas tipo Synaptic.

En todas las versiones actuales de Debian, el paquete apt tiene prioridad “important”, lo que significa que forma parte de cualquier instalación básica del sistema. Y, aunque dpkg sigue siendo el corazón, para el usuario normal el “gestor de paquetes” en el día a día es APT, que además convive con otros formatos como Flatpak en muchos escritorios modernos.

Una de las características más potentes de APT es que organiza la instalación y desinstalación de paquetes en un orden óptimo. Antes de lanzar dpkg, hace un ordenamiento topológico de la lista de paquetes para minimizar conflictos, y solo en casos difíciles recurre a forzar acciones internas de dpkg con opciones --force si no encuentra una alternativa segura.

Repositorios y archivo sources.list

APT trabaja siempre a partir de repositorios de software declarados en archivos de configuración. El fichero principal es /etc/apt/sources.list, donde se definen las fuentes de paquetes oficiales de Debian o Ubuntu, y se pueden añadir repositorios adicionales de terceros. Si necesitas crear tu propio repositorio de software te será útil para entender cómo apuntar APT a un origen personalizado.

Además del archivo principal, es habitual que haya archivos extra bajo /etc/apt/sources.list.d/ para repositorios concretos. Estos puntos pueden referirse tanto a directorios locales o medios físicos (como un CD/DVD) como a servidores remotos accesibles por HTTP, HTTPS o FTP.

APT mantiene también una caché local de la información de todos los paquetes disponibles en esos repositorios. Se almacena principalmente bajo /var/lib/apt/ y se actualiza mediante el conocido comando apt update o apt-get update.

Para editar cómodamente las fuentes, la propia suite incluye el comando apt edit-sources, que abre con tu editor de texto de terminal predeterminado el archivo principal sources.list o el fichero que le indiques. Si no tienes editor configurado, te pedirá elegir uno (nano, vim, neovim, etc.) y a partir de ahí lo usará siempre.

Gestión de dependencias y estados de los paquetes

La gran diferencia respecto a dpkg es que APT se encarga automáticamente de resolver y descargar dependencias. Cuando pides instalar un paquete, calcula qué otros paquetes hacen falta, qué versiones son compatibles y qué conflictos podrían aparecer, y solo entonces llama a dpkg para materializar los cambios. Para tareas de diagnóstico y depuración puedes consultar cómo listar dependencias de un paquete y evitar romper el sistema al instalar algo.

APT también mantiene un fichero adicional, /var/lib/apt/extended_states, donde registra si un paquete se instaló explícitamente por el usuario o como dependencia de otro. Esta información es clave para que funciones como apt autoremove puedan saber qué paquetes son candidatos a ser eliminados por quedar “huérfanos”.

En cuanto a los estados, hay un matiz interesante: APT, cuando se usa apt list --installed, omite los paquetes marcados como “deinstall” (los que fueron desinstalados pero conservan configuración). Estos aparecen en la salida de apt list como “residual-config”, mientras que dpkg --get-selections sí los muestra de forma directa. Si alguna lista no coincide, conviene revisar las salidas originales y filtrar con grep para analizar esos casos límite.

Comandos básicos de apt para el día a día

Con la llegada del comando moderno apt, Debian y Ubuntu proporcionan una interfaz más amigable para tareas habituales de gestión de paquetes, unificando funciones que antes estaban repartidas entre apt-get y apt-cache. Aunque internamente use las mismas librerías, su sintaxis es más cómoda y su salida es más legible; además, en el escritorio convive con otros formatos como gestionar AppImage en Linux.

El archivo /etc/apt/sources.list que mencionábamos antes concentra por defecto la información de todos los repositorios utilizados por apt, a diferencia de herramientas como yum que suelen manejar múltiples archivos de configuración. Esto simplifica mucho la gestión inicial para usuarios menos experimentados.

Actualizar la información de los repositorios

Antes de instalar nada, APT necesita tener la lista de paquetes de los repositorios actualizada para saber qué versiones hay disponibles. Para ello se usa:

  • apt update: descarga de nuevo los índices de paquetes desde todos los repos configurados.

La diferencia con el viejo apt-get update es que apt muestra información adicional muy útil, como el número de paquetes que pueden actualizarse y un mensaje sugiriendo ejecutar apt list --upgradable para verlos en detalle.

Buscar paquetes en los repositorios

Para localizar un programa o librería en los disponibles podemos usar la búsqueda integrada de APT. Tradicionalmente esto se hacía con apt-cache search, pero el comando apt simplifica la sintaxis:

  • apt search nombre o apt-cache search nombre: buscan en la base de datos de paquetes descargada el texto indicado.

De este modo es sencillo ver qué paquete corresponde a una aplicación concreta (por ejemplo, buscar “gimp”, “vlc” o “libreoffice”) y comprobar si está disponible para tu versión de la distribución.

Instalar y desinstalar paquetes con apt

La operación más habitual que vas a realizar con APT es instalar y eliminar software desde los repositorios. Aquí la sintaxis es muy directa:

  • apt install paquete: instala el paquete solicitado y todo lo que necesite como dependencia.
  • apt remove paquete: desinstala el paquete, pero mantiene sus ficheros de configuración.
  • apt remove --purge paquete o apt purge paquete: elimina el paquete y también sus archivos de configuración del sistema.
  Todos los atajos de teclado para WhatsApp Web y Desktop

Cuando solo se usa remove, pueden quedar “restos” en forma de conffiles o directorios de configuración. Es algo normal para que, si reinstalas la aplicación, conserve tus ajustes. Si quieres un borrado total, la opción de purga es la adecuada.

Limpiar dependencias y paquetes sobrantes

Tras instalar y desinstalar aplicaciones a lo largo del tiempo, se van acumulando paquetes que se instalaron como dependencias de otros pero que ya no son necesarios. Para liberar espacio y mantener el sistema limpio, APT ofrece:

  • apt autoremove: elimina las dependencias instaladas automáticamente que ya no son requeridas por ningún paquete actualmente instalado.

Esta orden resulta especialmente útil como medida de mantenimiento periódico, ya que retira bibliotecas antiguas y archivos que solo consumen espacio sin aportar nada al sistema actual.

Actualizar paquetes instalados con apt

Una vez que los índices de los repositorios están al día, el siguiente paso es aplicar las actualizaciones disponibles para los paquetes instalados. APT distingue dos niveles de actualización:

  • apt upgrade: actualiza los paquetes instalados a sus versiones más recientes siempre que no requieran instalar ni eliminar paquetes adicionales de forma drástica.
  • apt full-upgrade: realiza una actualización más agresiva, permitiendo instalar o eliminar paquetes si es necesario para completar el proceso (equivalente al antiguo apt-get dist-upgrade).

Es habitual ejecutar primero apt update seguido de apt upgrade como rutina de mantenimiento, y reservar full-upgrade para cambios mayores de versión o cuando se actualiza el kernel y componentes importantes.

Otros comandos útiles de la suite apt

Además de las órdenes más famosas, APT incluye algunos comandos adicionales que facilitan bastante la vida:

  • apt show paquete: muestra información detallada de un paquete (descripción, versión, dependencias, repositorio de origen, etc.), con una salida ordenada y sin datos irrelevantes.
  • apt list: lista paquetes según diferentes filtros; con --installed muestra los instalados y con --upgradable los que tienen una actualización disponible.
  • apt edit-sources: abre el archivo de fuentes de APT para modificar los repositorios.

Todo esto convierte a apt en una especie de “navaja suiza” de la gestión de paquetes, cubriendo la mayoría de tareas que un usuario medio realiza a diario sin necesidad de recordar una batería enorme de subcomandos.

Apt-get y aptitude: otros frontends clásicos de APT

Aunque el comando apt ha ganado protagonismo en los últimos años, apt-get y aptitude siguen siendo herramientas muy relevantes en el ecosistema Debian. Cada una tiene su hueco y hay razones de peso para saber en qué contexto conviene usarlas.

Históricamente, apt-get fue el primer frontend de línea de comandos para APT, presente desde finales de los 90 y protagonista en infinidad de scripts y documentación. Se diseñó pensando en ofrecer una interfaz estable y predecible, ideal para automatización y tareas no interactivas.

Por su parte, aptitude nació como una alternativa más “inteligente” y cómoda para usuarios que preferían un entorno interactivo. Ofrece tanto un modo CLI compatible con scripts como una interfaz en modo texto (ncurses) con menús, filtros y vistas organizadas de los paquetes.

Funciones y comandos típicos de apt-get

Con apt-get se pueden realizar prácticamente las mismas tareas que con apt, aunque con una sintaxis algo más verbosa y una salida menos amigable. Sus comandos más usados son:

  • apt-get update: actualiza los índices de los repositorios.
  • apt-get upgrade: actualiza paquetes instalados sin realizar cambios demasiado intrusivos.
  • apt-get dist-upgrade: equivalente al apt full-upgrade moderno, permitiendo instalar y eliminar paquetes para completar una actualización compleja.
  • apt-get install paquete: instala un paquete desde los repositorios resolviendo dependencias.
  • apt-get remove paquete y apt-get purge paquete: eliminan paquetes, con o sin sus archivos de configuración.

Una ventaja clave de apt-get es que su comportamiento se mantiene extremadamente estable entre versiones. Por ese motivo, los desarrolladores de Debian recomiendan seguir usándolo en scripts y automatizaciones, ya que apt está más orientado al usuario final y puede cambiar detalles de salida o valores por defecto con el tiempo.

Aptitude: interfaz ncurses y resolución avanzada de dependencias

A diferencia de apt y apt-get, aptitude aporta una interfaz en modo texto muy completa que se lanza simplemente ejecutando sudo aptitude sin argumentos. Desde esa pantalla puedes:

  • Navegar por categorías de paquetes (instalados, disponibles, obsoletos, etc.).
  • Buscar y filtrar paquetes con diferentes criterios (nombre, descripción, estado).
  • Marcar varios paquetes para instalar, actualizar o eliminar y aplicar todos los cambios de golpe.

Su gran baza técnica está en el sistema de resolución de dependencias basado en puntuaciones y alternativas. Cuando hay un conflicto complejo, aptitude suele ofrecer varias soluciones (por ejemplo, desinstalar un paquete, mantener una versión antigua o instalar otros adicionales) y permite que el usuario marque qué partes de la propuesta prefiere conservar o descartar en el siguiente intento de resolución.

En el aspecto de línea de comandos, aptitude también soporta órdenes como:

  • aptitude update: para actualizar la lista de paquetes.
  • aptitude install paquete y aptitude remove paquete: instalar y eliminar paquetes de forma similar a apt-get.
  • aptitude full-upgrade: realizar una actualización completa con una lógica propia de resolución de dependencias.
  Reparar El Código De Error BIOHD-4 En Computadora HP

Además, aptitude registra de forma muy fina qué paquetes se instalaron manualmente y cuáles como dependencias, y dispone de opciones para congelar versiones, marcar paquetes para que no se actualicen, etc. Algunas de estas funciones se pueden replicar hoy mediante apt-mark, pero aptitude sigue siendo muy apreciado por administradores que llevan años utilizándolo.

Diferencias clave entre dpkg, APT, apt-get, apt y aptitude

Después de ver cada herramienta por separado, conviene hacer una foto conjunta para entender en qué se diferencian exactamente y cuándo conviene usar cada una. Podríamos resumirlo en tres niveles: bajo, medio y alto.

En el nivel más básico está dpkg, que actúa directamente sobre paquetes .deb locales. No resuelve dependencias ni habla con repositorios; simplemente instala, desinstala o muestra información de un paquete concreto. Es comparado a menudo con RPM en el mundo Red Hat, ya que cumplen funciones similares en sus respectivas familias de distribuciones.

En el nivel intermedio/alto tenemos APT como sistema de gestión de paquetes con repositorios, cacheo de información y resolución automática de dependencias. Proporciona la lógica de qué se instala y desde dónde, cuál es la mejor versión, etc. En el mundo Red Hat, el paralelismo estaría en y herramientas como YUM o DNF que funcionan sobre RPM.

Por encima de APT se sitúan sus distintos frontends:

  • apt-get: la interfaz clásica, robusta y estable, muy orientada a scripts y automatización.
  • apt: la interfaz moderna para usuarios finales, que consolida funciones de apt-get y apt-cache y ofrece una salida más clara.
  • aptitude: un gestor de paquetes de alto nivel con TUI ncurses opcional y un sistema de resolución de dependencias especialmente sofisticado.

Si nos centramos en APT frente a DPKG, la diferencia fundamental es que APT puede recuperar paquetes desde repositorios remotos, gestionar múltiples orígenes y encargarse de todas las dependencias, mientras que DPKG solo instala y quita paquetes que tú le pasas como archivo local.

Si comparamos apt y apt-get, ambos ofrecen funciones muy similares para instalar, actualizar o eliminar paquetes, pero apt mejora la presentación de la información, incorpora barras de progreso durante las instalaciones y aglutina en un solo comando cosas que antes se hacían con apt-get y apt-cache. En cambio, apt-get proporciona una API de línea de comandos más conservadora y estable a lo largo del tiempo.

Respecto a aptitude, su principal seña de identidad es la interfaz ncurses y el tratamiento avanzado de conflictos de dependencias. Mientras que apt y apt-get intentan encontrar la “mejor” solución de un tirón, aptitude permite al usuario participar de forma interactiva en el proceso, decidiendo qué paquetes mantener, qué degradar o qué eliminar.

Cuándo usar dpkg, apt, apt-get o aptitude en sistemas Debian

Una vez claras las diferencias, la pregunta que se hace mucha gente es qué comando usar en cada situación concreta. No hay una única respuesta válida, pero sí patrones bastante razonables que siguen muchos administradores y usuarios avanzados.

Para el uso cotidiano en un sistema de escritorio o servidor ligero, la opción más cómoda suele ser utilizar el comando apt para casi todo: actualizar repositorios, buscar aplicaciones, instalar y desinstalar paquetes, revisar qué se puede actualizar y lanzar las actualizaciones regulares.

Cuando se trata de programar scripts de instalación, despliegue o mantenimiento, la propia documentación oficial aconseja seguir confiando en apt-get (y apt-cache para las consultas), ya que su comportamiento de salida y sus opciones son mucho más estables entre versiones que las de apt, que puede cambiar pequeños detalles al estar pensado para humanos y no tanto para máquinas.

dpkg queda reservado principalmente para operaciones de bajo nivel con paquetes .deb descargados a mano, para inspeccionar contenidos o para casos en los que necesitas un control muy fino y no quieres que APT interfiera resolviendo dependencias por ti. También es muy útil para scripts sofisticados de empaquetado o para depurar problemas concretos con .deb.

Por su lado, aptitude suele brillar cuando te enfrentas a conflictos de dependencias realmente enrevesados en entornos Debian más veteranos o muy personalizados. Su motor de resolución suele proponer más alternativas y su interfaz ncurses resulta muy cómoda para explorar qué cambios se van a hacer antes de aceptar una operación de gran calado.

En definitiva, todo este ecosistema de herramientas existe porque cada nivel resuelve un problema distinto dentro de la gestión de paquetes en Debian: dpkg como engranaje de bajo nivel, APT como cerebro que decide qué instalar y desde dónde, y sus distintos frontends (apt, apt-get, aptitude) como caras visibles adaptadas a distintos perfiles de usuario, desde el más novato hasta el administrador que vive pegado a la terminal.

instalar paquetes deb y rpm sin comandos
Artículo relacionado:
Guía completa para instalar paquetes DEB y RPM sin complicarte