Technology solutions that boost business performance

Contacto
MX: Insurgentes Sur 318, Roma Norte
Cuauhtemoc (06700), CDMX, Mexico ARG: Juramento 1475, Piso 12, oficina 8
Belgrano (C14 28DMQ), CABA Argentina

Siete maneras de saber si un paquete está instalado en Linux.

Un comando no funciona y surge la pregunta: ¿Tengo instalado ese paquete?

En una publicación anterior ya descubrimos cómo listar paquetes instalados lo cual es útil, pero si tienes montones de paquetes y necesitas sólo información de uno es bastante práctico saber si está instalado y dónde está, con la ayuda de un simple comando en la consola.

Antes que nada, cabe aclarar que hay un gran número de formas en que esto puede lograrse, se enlistarán sólo siete, pero existen muchas más formas dependiendo de la distribución de Linux que se utilice.

apt

Ubuntu cuenta con un poderoso gestor de paquetes, el apt (Advanced Packaging Tool) que nos permite instalar y administrar los paquetes que utilizamos a lo largo y ancho del sistema. APT no sólo instala los paquetes, también gestiona el índice local de paquetes y puede actualizar por completo el sistema.

APT es un comando de gran utilidad para Administradores de sistemas ya que se puede utilizar sobre conexiones SSH, entre otras ventajas.

Para comenzar podemos verificar si Nano, el editor de texto, se encuentra instalado, para ello utilizaremos:

$ apt -qq list nano

nano/bionic,now 2.9.3-2 amd64 [installed]

En la respuesta se puede leer que el paquete está instalado, la versión del paquete, arquitectura y la versión de ubuntu para la que fue desarrollado (Ubuntu Bionic Beaver).

apt-cache

De requerir más datos, APT tiene más que ofrecer, todo gracias a sus índices.

El índice local de paquetes es una base de datos almacenada en Ubuntu que funciona como un caché y resguarda los metadatos de cada uno de los paquetes instalados. Gracias a esto se le puede consultar mediante el comando apt-cache:

$ apt-cache policy nano

nano:

 Installed: 2.9.3-2
 Candidate: 2.9.3-2
 Version table:
*** 2.9.3-2 500
       500 https://in.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
       100 /var/lib/dpkg/status

Como se puede ver, apt-cache devolverá no sólo una respuesta positiva o negativa, también traerá detalles como la versión instalada, la última versión lanzada y la información del repositorio desde donde se obtuvo el paquete.

dpkg

En Debian y distribuciones basadas en Debian existe DPKG (Debian Package), la herramienta desde la cual podemos instalar, eliminar y compilar paquetes. La diferencia entre éste y APT es que DPKG no puede descargar e instalar automáticamente paquetes o sus dependencias.

Para verificar si un paquete está instalado con DPKG podemos hacerlo mediante el siguiente comando:

$ dpkg -l | grep -i nano

ii  nano     2.9.3-2  amd64 small, friendly text editor inspired by Pico

En esta ocasión, la salida muestra al inicio ii, que significa que el paquete está instalado en el sistema, también se obtiene la versión, arquitectura y la descripción del paquete.

dpkg-query

Al igual que APT, DPKG tiene una base de datos donde almacena la lista de paquetes instalados, por lo que para hacer una consulta a esa base de datos utilizamos el comando dpkg-query:

$ dpkg-query --list | grep -i nano

ii  nano    2.9.3-2   amd64 small, friendly text editor inspired by Pico

Y obtenemos la misma información que con el comando anterior, se podrían considerar como dos caminos a la misma solución.

which

Si el paquete que se busca se encuentra en el PATH, which es el comando más útil y rápido para verificar si un paquete está instalado.

$ which nano

/bin/nano

En el anterior comando se deduce que, si devolvió la ruta es señal de que el paquete está instalado y puede ser ejecutado.

Un detalle importante a mencionar es que which sólo busca dentro del PATH del usuario, es decir que no analiza paquetes compartidos por usuarios o que estén instalados en el directorio del usuario ROOT, es necesario iniciar sesión como un usuario en específico para utilizar el comando en la misma cuenta.

whereis

Similar a which, whereis es un comando que despliega la ruta en que el paquete se encuentra instalado, por lo que si no la muestra, es señal de que no está instalado.

$ whereis nano

nano: /bin/nano /usr/share/nano /usr/share/man/man1/nano.1.gz /usr/share/info/nano.info.gz

La gran diferencia entre éste y which es que mostrará las rutas tanto del usuario actual como de paquetes compartidos.

Además de mostrar la ruta del paquete binario o archivo ejecutable, también muestra la ruta de la fuente y el manual de uso del paquete.

locate

Al igual que otros gestores de paquetes, locate utiliza una base de datos para ubicar rápidamente un paquete en vez de revisar ruta por ruta como lo hace find.

$ locate --basename '\nano'

/usr/bin/nano
/usr/share/nano
/usr/share/doc/nano

Tal como whereis y which, locate regresa las rutas de los archivos binarios o ejecutables y de no ser así, significa que no están instalados.

La gran desventaja de locate es que podría no venir preinstalado en todas las distribuciones de Linux y es necesario instalarlo manualmente para poder disfrutar de los beneficios que ofrece.

¿El paquete está instalado?

Los anteriores son sólo 7 métodos para saber si un paquete está instalado en Linux, pero existen más como el comando find, un método nativo de uso general que también podría servir para localizar paquetes, pero su rapidez dependerá de la cantidad de datos almacenados ya que, como se mencionó antes, revisa ruta por ruta hasta encontrar lo que se busca.

Leave a Comment

English