Cómo enumerar las dependencias de un paquete en Ubuntu

A diferencia de Windows, macOS y Android, el software en Ubuntu, y Linux en general, no se distribuye como un solo paquete. En cambio, cuando instala una aplicación, el administrador de paquetes de su sistema descarga varios paquetes, incluido el paquete de la aplicación principal y sus dependencias. Sin embargo, esto solo es válido para la instalación de paquetes tradicional en Linux, es decir, el uso de administradores de paquetes.

Saber qué dependencias adicionales se descargan durante una instalación puede ser beneficioso tanto para usuarios principiantes como avanzados. De esta manera, uno tiene un control completo sobre los paquetes instalados en su sistema.

Echemos un vistazo a cómo puede verificar las dependencias de un paquete en Ubuntu.

¿Qué son las dependencias de paquetes?

Las dependencias son paquetes de soporte necesarios para el correcto funcionamiento de una aplicación en Linux. Por ejemplo, si desea descargar el reproductor multimedia VLC en Ubuntu, APT instalará algunos paquetes adicionales como libc6 y gcc , además del paquete principal " vlc ". Una dependencia también puede tener otros paquetes como sus dependencias, por lo tanto, formando una estructura jerárquica.

Dado que los paquetes de Linux son interdependientes, casi todos los programas requieren paquetes adicionales que debe instalar en su sistema.

Aunque los administradores de paquetes como APT automatizan la administración y la instalación de dichas dependencias, se producen errores cuando intenta compilar el paquete manualmente desde la fuente. Sin embargo, puede resolver tales errores simplemente instalando la dependencia requerida en su sistema usando el comando apt install .

Cómo comprobar las dependencias de los paquetes en Linux

Afortunadamente, en Ubuntu, hay varias formas de obtener una lista de dependencias de un paquete. APT, el administrador de paquetes predeterminado en Ubuntu y distribuciones basadas en Debian, ofrece múltiples comandos para obtener información relacionada con la dependencia de un paquete.

Uso del Administrador de paquetes APT

Puede usar APT en Ubuntu para obtener una lista de dependencias asociadas con un paquete. La sintaxis básica del comando es:

 sudo apt depends packagename

Por ejemplo, para verificar las dependencias del paquete rhythmbox :

 sudo apt depends rhythmbox

Además de la lista de dependencias, la salida también incluirá paquetes recomendados y sugeridos que puede instalar junto con rhythmbox .

Alternativamente, también puede usar el comando apt-cache para obtener el mismo resultado.

 sudo apt-cache depends rhythmbox

Para obtener información adicional relacionada con un paquete específico, use el método show en lugar de depende .

 sudo apt show rhythmbox
sudo apt-cache show rhythmbox

Producción:

Listado de dependencias usando dpkg

Si ha descargado un paquete DEB en su sistema y desea saber qué dependencias se instalarán junto con el paquete, puede usar el indicador -I (i en mayúscula, no en L minúscula) o –info con el comando.

 sudo dpkg -I /path/to/package.deb
sudo dpkg --info /path/to/package.deb

… donde /path/to/package.deb es la ruta absoluta o relativa al archivo DEB.

La salida mostrará el tamaño del paquete, la fuente y otra información útil junto con la lista de dependencias.

Para obtener la lista de dependencias de un paquete instalado, use la marca -s con dpkg. Por ejemplo:

 sudo dpkg -s firefox

Producción:

Relacionado: ¿Cuál es la diferencia entre APT y dpkg en Ubuntu?

Usando apt-rdepends

Para obtener una salida más detallada, puede usar la utilidad apt-rdepends. Dado que no viene preinstalado en la mayoría de las distribuciones de Linux, tendrá que instalarlo manualmente en Ubuntu usando APT.

 sudo apt install apt-rdepends

Utilice el siguiente formato de comando para obtener el árbol de dependencias de un paquete:

 apt-rdepends packagename

Por ejemplo:

 apt-rdepends vlc

Producción:

La salida generada es generalmente larga, ya que apt-rdepends muestra un árbol jerárquico completo de dependencias, lo que significa que también obtiene la lista de dependencias de una dependencia.

También puede obtener una lista de paquetes que dependen de un paquete en particular. Por ejemplo, para comprobar qué paquetes requieren libc como dependencia:

 apt-rdepends -r libc

Producción:

La utilidad inversa-depende

Aunque la función de dependencia inversa (el indicador -r ) de apt-rdepends funciona mejor de lo esperado, hay otra utilidad que puede utilizar para extraer las dependencias inversas de un paquete. El comando de dependencia inversa es parte del paquete ubuntu-dev-tools y se puede descargar usando:

 sudo apt install ubuntu-dev-tools

La sintaxis predeterminada del comando es:

 reverse-depends options packagename

… donde las opciones son las banderas que se pueden utilizar con el comando y nombrepaquete es el nombre del paquete que desea revertir comprobar las dependencias de.

También puede agregar varios indicadores al comando mencionado anteriormente para modificar la salida. Aquí hay una lista de las opciones más útiles:

  1. -R : enumera solo las dependencias directas (no hay paquetes sugeridos o recomendados)
  2. -s : incluye paquetes sugeridos
  3. -l : presenta la salida en un formato más limpio, apropiado para su uso en scripts

En caso de que no pueda averiguar cómo usar la herramienta y necesite ayuda en la línea de comandos , use el indicador –help o -h .

 reverse-depends -h
reverse-depends --help

Obtenga la lista de dependencias mediante una instalación / desinstalación simulada

Para aquellos que desean una lista breve de todas las dependencias que actualmente no están instaladas en el sistema, pueden ejecutar una instalación (o desinstalación) simulada de un paquete en particular.

Para verificar las dependencias requeridas por el paquete PHP, por ejemplo, ejecute el siguiente comando:

 sudo apt install -s php

La salida contendrá una sección "Se instalarán los siguientes paquetes adicionales". Todos los nombres de paquetes enumerados a continuación son dependencias que no se encontraron en su sistema.

Si desea obtener una lista de dependencias para un paquete ya instalado en Ubuntu, puede realizar una desinstalación simulada para verificar qué paquetes adicionales se eliminarán con él.

 sudo apt remove -s packagename

Ejemplo:

 sudo apt remove -s rhythmbox

Producción:

Los paquetes de Linux son interdependientes

Como puede deducir bastante de esta guía, casi todos los paquetes de Linux dependen de otro paquete. El principio principal detrás de este concepto es que en los sistemas operativos basados ​​en Linux, se supone que cada paquete hace un solo trabajo y lo hace bien.

Si se ha desarrollado un paquete para administrar servicios de audio, otros programas simplemente enumerarán dicho paquete como su dependencia y lo usarán para cumplir con sus requisitos de audio.

Además, en caso de que varias aplicaciones exijan el mismo paquete, solo se instala una vez en el sistema, lo que evita la redundancia de datos y ahorra espacio de almacenamiento en el disco. También puede obtener una lista de todos los paquetes instalados actualmente en su sistema usando APT.