Cuando instalas software en GNU/Linux, las dependencias de los paquetes pueden ser tu mejor aliado o tu peor pesadilla. Saber qué bibliotecas y paquetes adicionales necesita un programa es clave para evitar errores, instalaciones a medias y sistemas rotos, sobre todo si trabajas sin conexión o en servidores en producción.
En este artículo vamos a ver, de forma detallada y con un tono lo más práctico posible, cómo listar las dependencias de un paquete en Linux en diferentes distribuciones: Debian/Ubuntu (DEB), Fedora/RHEL/CentOS (RPM), Arch Linux, openSUSE y también cómo averiguar qué bibliotecas usa un binario cualquiera. Además, repasaremos comandos útiles de gestión de paquetes para que entiendas mejor qué está pasando “por detrás” cuando instalas algo.
Por qué te interesa conocer las dependencias de un paquete
En cualquier distro moderna, los gestores de paquetes como apt, dnf, yum, pacman o zypper son capaces de resolver automáticamente la mayoría de dependencias. Tú pides instalar un programa y ellos arrastran todo lo necesario. Sin embargo, hay varios escenarios donde es vital ver esas dependencias de forma explícita.
Por ejemplo, si sueles probar software nuevo, compilar aplicaciones o administrar servidores, te interesa saber cómo configurar un entorno de desarrollo y qué otros componentes se van a instalar, qué ocupa espacio y qué podría romper algo existente. Así evitas conflictos de versiones, librerías duplicadas o paquetes que no quieres ni ver en el sistema.
También es muy habitual la situación de trabajar sin conexión a Internet o con equipos aislados. En esos casos necesitas poder descargar de golpe todas las dependencias en un equipo con red para luego llevártelas en un USB a la máquina desconectada y no ir a base de prueba y error, anotando dependencias rotas una por una.
Otro punto importante es el mantenimiento a largo plazo: conocer las dependencias te ayuda a detectar paquetes que sólo se instalaron como requisito de otros y que ya no son necesarios, limpiar el sistema y reducir la superficie de ataque y los posibles conflictos, por ejemplo al configurar un entorno de escritorio ligero.
También es muy habitual la situación de trabajar sin conexión a Internet o con equipos aislados. En esos casos necesitas poder descargar de golpe todas las dependencias en un equipo con red para luego llevártelas en un USB a la máquina desconectada y no ir a base de prueba y error, anotando dependencias rotas una por una.
Otro punto importante es el mantenimiento a largo plazo: conocer las dependencias te ayuda a detectar paquetes que sólo se instalaron como requisito de otros y que ya no son necesarios, limpiar el sistema y reducir la superficie de ataque y los posibles conflictos.
Listar dependencias en distribuciones basadas en Debian (DEB)
En el ecosistema Debian y derivados (Ubuntu, Linux Mint, Elementary OS y compañía) tenemos varias herramientas muy potentes para gestionar y consultar las dependencias de un paquete, tanto si ya está instalado como si sólo dispones del archivo .deb.
Ver dependencias desde los repositorios con apt-cache

Si el paquete está en los repositorios configurados en tu sistema, la forma más directa de revisar qué necesita es usar apt-cache depends nombre_paquete. Este comando interroga a la base de datos de APT y te muestra la lista de paquetes de los que depende el paquete objetivo, así como los sugeridos y recomendados.
Por ejemplo, para ver las dependencias de vim en Debian o Ubuntu, puedes ejecutar algo como apt-cache depends vim y obtendrás un listado con líneas del estilo “Depends:” y “Suggests:”, indicando qué paquetes son imprescindibles y cuáles son opcionales o recomendados.
Igualmente útil es el comando apt-cache rdepends nombre_paquete, que sirve para ver la relación inversa: qué otros paquetes dependen de ese. Esto es clave cuando te planteas desinstalar algo y quieres comprobar qué romperías o qué se eliminaría en cascada si lo quitas.
Si quieres profundizar un poco más, puedes echar un vistazo a la ayuda rápida con apt-cache –help o ir directamente a la documentación detallada con man apt-cache, donde verás opciones como show, pkgnames, stats o unmet para consultar estadísticas, dependencias no resueltas o información detallada de un paquete.
Ver dependencias de un archivo .deb suelto con dpkg-deb
Cuando lo que tienes es un paquete .deb descargado a mano (por ejemplo desde una web o desde otro equipo) y aún no está instalado, puedes leer su información interna sin necesidad de instalarlo usando el comando dpkg-deb -I nombre_paquete.deb.
Este comando muestra los metadatos del paquete, entre ellos el campo Depends:, en el que aparece la lista exacta de paquetes que deben estar presentes (y en qué rangos de versiones) para que la instalación sea correcta. De esta forma puedes identificar rápidamente qué tienes que descargar además del paquete principal.
Imagina que quieres saber qué necesita un paquete como python-glade2_2.13.0-0ubuntu8_i386.deb. Al ejecutar dpkg-deb -I sobre él verás algo parecido a “Depends: python (<< 2.6), python (>= 2.4), python-support (>= 0.7.1)… etc.”, lo que te indica claramente todas las piezas que deben estar ya instaladas o que tendrás que conseguir.
Descargar paquetes sin instalarlos con aptitude
Para completar el trabajo cuando estás preparando una instalación offline, te vendrá muy bien descargar .deb sin instalarlos. Herramientas como aptitude permiten hacerlo de forma muy sencilla con el comando aptitude download nombre_paquete.
Así, si ejecutas algo como aptitude download vlc, el sistema descargará el .deb correspondiente a VLC en tu directorio actual, sin añadirlo al sistema. Combinando esto con la lectura de dependencias mediante dpkg-deb, puedes recopilar todo el conjunto de paquetes necesarios en un solo viaje con tu USB, evitando el clásico ciclo de “instalo – falta una dependencia – apunto el nombre – vuelvo a descargar”.
Además de download, aptitude aporta un montón de opciones orientadas a la gestión avanzada de paquetes y dependencias: aptitude search para buscar por nombre, aptitude show para ver detalles, aptitude why y aptitude why-not para explicar por qué se debe (o no se puede) instalar un paquete concreto, o la simulación de instalaciones con aptitude -rsvW install paquete para revisar qué pasaría sin tocar nada.
Consultar dependencias y paquetes con dpkg, apt-get y dselect
La herramienta base en sistemas Debian es dpkg, que se encarga de manipular paquetes individuales. Aunque no resuelve dependencias por sí sola, ofrece opciones como dpkg -I para ver la información de un paquete .deb desinstalado, dpkg -l para listar paquetes instalados o dpkg -L para ver qué archivos instala un paquete concreto.
Por su parte, apt-get es el clásico front-end para APT con el que puedes instalar, actualizar y eliminar paquetes junto con sus dependencias. Comandos como apt-get install, apt-get upgrade, apt-get dist-upgrade o apt-get check manejan la resolución de dependencias y permiten incluso simular instalaciones con -s para ver qué sucedería sin ejecutar cambios reales.
Otra herramienta veterana pero potente es dselect, que ofrece un interfaz de texto interactivo para navegar por paquetes, seleccionar qué instalar o eliminar y gestionar dependencias de forma más visual. Aunque hoy en día se use menos, sigue siendo una opción para quienes prefieren menús y listas en lugar de recordar comandos.
Limpiar paquetes huérfanos con debfoster
Con el paso del tiempo, es muy habitual que se acumulen paquetes instalados sólo como dependencias de programas que ya has eliminado. Para este tipo de limpieza en sistemas basados en Debian existe una herramienta muy interesante llamada debfoster.
Su idea es sencilla: cuando lo ejecutas, te muestra una lista de paquetes que no han sido marcados como “instalados manualmente” y te va preguntando uno a uno si quieres conservarlos o no, permitiéndote responder con sí (y), no (n), ayuda (h) o más información (?).
A medida que vas contestando, debfoster va guardando tus decisiones en su propia base de datos, de modo que no vuelve a preguntarte por los mismos paquetes en futuras ejecuciones. Es una forma práctica de mantener tu sistema libre de “lastre” innecesario, siempre con cuidado de no borrar nada que realmente siga siendo útil.
Listar dependencias en distribuciones basadas en RPM (Fedora, RHEL, CentOS…)
En el mundo RPM (Fedora, Red Hat Enterprise Linux, CentOS, Scientific Linux, AlmaLinux, Rocky, etc.), la lógica es similar pero las herramientas cambian. De nuevo, vamos a distinguir entre paquetes instalados desde repositorios y archivos .rpm sueltos.
Usar rpm para ver dependencias
La utilidad básica en estos sistemas es rpm, que permite instalar, actualizar, eliminar y consultar paquetes. Para nuestro tema, lo que más nos interesa es la acción de consulta con la opción -q y, en particular, sus variantes relacionadas con dependencias.
Si quieres ver de qué depende un paquete ya instalado o disponible en la base de datos del sistema, puedes utilizar rpm -qR nombre_paquete. Ese comando mostrará los requisitos del paquete, es decir, las bibliotecas y otros paquetes que deben estar presentes para que funcione correctamente.
Cuando lo que tienes es un archivo .rpm local, que todavía no se ha instalado, la sintaxis es prácticamente la misma, pero añadiendo la opción -p para indicar que vas a consultar un archivo: rpm -qpR archivo.rpm. De esta manera verás sus dependencias sin necesidad de instalar nada.
Además de -qR, rpm dispone de muchas otras acciones relevantes para la gestión de paquetes, como -i para instalar, -U para actualizar o instalar si no existe, -F para actualizar sólo si ya hay una versión anterior, -e para desinstalar, -V para verificar o -K para comprobar la integridad del paquete.
Resolver y listar dependencias con yum y dnf
Sobre rpm se apoyan gestores de alto nivel como yum y, en sistemas más actuales, dnf. Estas herramientas sí resuelven automáticamente las dependencias y ofrecen comandos para consultarlas de forma bastante cómoda.
Con yum, por ejemplo, puedes usar yum deplist nombre_paquete para mostrar las dependencias de un paquete concreto, tal y como las resolvía el gestor en sus repositorios. También es posible consultar qué paquete proporciona una determinada dependencia con yum provides o yum whatprovides, muy útil cuando sabes el nombre de una biblioteca pero no el del paquete que la contiene.
Además de instalar (yum install), actualizar (yum update o upgrade), eliminar (yum remove o erase), buscar (yum search) o listar información (yum info, yum list), el comando yum resolvedep permite mostrar qué paquetes satisfeacen una dependencia concreta, lo que va perfecto para entender cómo se encajan las piezas.
En cuanto a comparativas, puedes pensar que yum install equivale, en esencia, a un rpm -ivh o rpm -Uvh pero con resolución automática de dependencias; que yum remove se corresponde con rpm -e; o que yum info te da una información similar a rpm -qi. En muchas situaciones, usar yum (o dnf, en distros más recientes) es simplemente más cómodo y seguro que interactuar sólo con rpm.
Listar dependencias en Arch Linux y derivados (pacman, pactree)

Si trabajas con Arch Linux o distros basadas como Manjaro o EndeavourOS, probablemente ya te suene pacman como gestor de paquetes. Lo interesante en este contexto es que pacman incluye una herramienta extra llamada pactree, pensada específicamente para producir árboles de dependencias.
El comando pactree nombre_paquete genera un esquema jerárquico de las dependencias del paquete, representado de forma textual en forma de árbol. Así puedes ver de un vistazo qué depende de qué y cómo se encadenan las relaciones, siguiendo cada rama hasta el final.
Por ejemplo, al ejecutar algo como pactree vim, verás vim en la parte superior y, debajo, líneas con símbolos que indican los paquetes de los que depende, éstos a su vez con sus propias dependencias, y así sucesivamente, mostrando incluso los casos en los que varias dependencias coinciden o se proporcionan mediante librerías alternativas.
La herramienta cuenta con diferentes opciones para modificar la salida, pero en la mayoría de los casos el uso simple de pactree nombre_paquete es más que suficiente para entender la estructura de dependencias de un paquete en Arch. Para detalles avanzados, siempre puedes recurrir a la documentación con man pactree.
Listar dependencias en SUSE y openSUSE (zypper)
En sistemas como SUSE y openSUSE el gestor de paquetes de referencia es zypper, que también permite ver las dependencias de un paquete de forma directa, tanto a nivel de instalación como de información.
Si quieres consultar qué requiere un paquete en concreto, puedes ejecutar algo como zypper info –requires nombre_paquete. Ese comando mostrará la información habitual de zypper sobre el paquete (versión, repositorio, descripción, etc.) junto con el listado de dependencias necesarias para su funcionamiento.
De esta forma, al igual que con apt-cache o rpm -qR, tienes una visión clara de las bibliotecas y paquetes adicionales que deben estar en el sistema, y puedes anticiparte a posibles problemas o preparar instalaciones en máquinas sin conexión.
Ver las dependencias de un archivo binario con ldd
Hasta ahora hemos hablado de dependencias a nivel de paquetes, pero en muchas ocasiones te interesa ir un paso más abajo y ver qué bibliotecas dinámicas utiliza un binario concreto, ya sea un ejecutable del sistema, un programa que has compilado tú mismo o un archivo que te han pasado.
Para eso existe el comando ldd archivo_binario, que analiza el binario y muestra la lista de bibliotecas compartidas que carga en tiempo de ejecución, junto con la ruta de cada una y la dirección de memoria donde se enlaza.
Si necesitas más detalle, puedes usar ldd -v archivo_binario para obtener información adicional, incluyendo las dependencias de las propias bibliotecas cargadas. Es una herramienta muy útil para diagnosticar errores de “library not found”, problemas con versiones incompatibles o simplemente para entender qué está usando exactamente un programa bajo el capó.
Instalar paquetes y dependencias sin conexión a Internet
Un caso que sigue siendo bastante común es el de quienes necesitan instalar programas en máquinas sin Internet, ya sea por seguridad, por restricciones de red o porque simplemente no hay conexión disponible. En entornos Debian/Ubuntu hay varios trucos que te facilitan la vida.
Por un lado, todo lo que descargas e instalas en un sistema con conexión se guarda habitualmente en /var/cache/apt/archives. Eso significa que, si en un equipo con Internet instalas un paquete como vlc con sudo aptitude install vlc, se quedarán almacenados tanto el paquete principal como todas sus dependencias en ese directorio de caché.
Si copias el contenido de /var/cache/apt/archives a un USB, puedes llevarlo a la máquina sin Internet, pegar todos los .deb en una carpeta y ejecutar sudo dpkg -i *.deb para intentar instalarlos todos de golpe. A veces funcionará a la primera, otras veces no; pero por lo menos tendrás ya gran parte de las piezas necesarias en local.
La parte menos agradable de este método es que a menudo aparece el típico mensaje de “dependencia no satisfecha” al instalar algún .deb, lo que implica volver al equipo con conexión, descargar lo que falte y repetir el proceso. Para minimizar esas idas y venidas, ayudas como dpkg-deb -I, apt-cache depends y aptitude download son oro puro.
Otra herramienta interesante que llegó a simplificar este escenario fue AptonCD, capaz de generar un repositorio local con todos los paquetes descargados para luego trasladarlo a otra máquina (por ejemplo, en un CD o DVD) y usarlo como fuente de instalación, reduciendo drásticamente el trabajo manual con USBs.
Resumen de comandos clave para gestionar paquetes y dependencias
Además de los comandos específicos para listar dependencias, conviene tener una visión global de las órdenes más útiles para gestionar paquetes en los principales sistemas, porque muchas veces el problema no es sólo ver qué depende de qué, sino también instalar, actualizar, limpiar o verificar que todo está en orden.
En sistemas Debian/Ubuntu, dpkg ofrece comandos como dpkg -i paquete.deb para instalar o actualizar, dpkg -r o -P para eliminar, dpkg -l para listar paquetes, dpkg -s para ver información de uno concreto, dpkg -L para listar los archivos que instala o dpkg -S para averiguar a qué paquete pertenece un archivo del sistema.
En el plano de APT, apt-get y apt-cache se complementan con comandos para instalar y actualizar (install, upgrade, dist-upgrade), limpiar la caché (clean, autoclean), comprobar dependencias (apt-get check) y obtener listas de paquetes o estadísticas sobre la base de datos.
En el mundo RPM, rpm se ocupa de las operaciones básicas (instalar, actualizar, desinstalar, verificar, consultar información), mientras que yum y dnf proporcionan una capa de comodidades para resolver dependencias automáticamente, buscar paquetes, listar información y trabajar con repositorios remotos.
Por último, herramientas como aptitude, dselect, debfoster, zypper o pactree completan el arsenal para tener un control fino sobre qué se instala, qué se borra, qué sobra en el sistema y cómo se relacionan entre sí los distintos paquetes y bibliotecas.
Con todos estos comandos en la mano, la tarea de listar dependencias de un paquete en Linux y entender qué está ocurriendo cada vez que instalas o eliminas software deja de ser un misterio y se convierte en un proceso controlado, incluso cuando trabajas sin conexión o en entornos sensibles donde no te puedes permitir improvisaciones.