Ubuntu / Consultar paquetes instalados, versiones y archivos con APT y dpkg-query
En Ubuntu, use apt list --installed para consultar los paquetes Deb instalados de forma interactiva. Para comprobar estados concretos o producir una salida controlada en scripts, use dpkg-query y seleccione los campos y estados necesarios. La consulta de un registro no implica por sí sola que el paquete siga instalado.
Ver la lista completa de paquetes instalados
Para consultar los paquetes Deb instalados, incluidos los gestionados mediante APT (Advanced Package Tool) o instalados desde un archivo local, junto con la versión y arquitectura, ejecute la orden siguiente.
apt list --installed
Si la lista es larga, puede dividirla en páginas con less o especificar directamente un patrón de nombre de paquete.
apt list --installed | less
apt list --installed 'nginx*'
apt es una interfaz usada por personas de manera interactiva. Para conservar los resultados en un archivo o procesarlos de manera confiable en otros comandos, dpkg-query, que permite especificar el formato de salida, es más adecuado.
dpkg-query -W -f='${binary:Package}\t${Version}\t${Architecture}\n' | sort
La consulta -W anterior enumera registros de dpkg y puede incluir paquetes retirados que conservan configuración. Para obtener solo nombres cuyo estado sea installed, puede filtrar explícitamente: dpkg-query -W -f='${db:Status-Status} ${binary:Package}\n' | awk '$1 == "installed" {print $2}'. Para las reglas de estado, consulte el manual de dpkg-query de Debian.
Verificar si un paquete específico está instalado
Cuando conoce el nombre exacto del paquete
El siguiente comando muestra los elementos de la base de datos de estado de dpkg de nginx. Si el paquete está instalado correctamente, aparecerá Status: install ok installed.
dpkg-query -s nginx
Para verificar el estado de instalación en una sola línea, puede imprimir directamente el campo de estado.
dpkg-query -W -f='${db:Status-Status}\n' nginx
La salida en un estado de instalación normal es installed. Si el paquete no está en la base de datos, se devuelve un estado de salida distinto de 0, por lo que en la automatización, además del texto en pantalla, verifique también el estado de salida.
Al buscar nombres similares juntos
dpkg-query -l admite patrones de comodín de shell. Es seguro poner el patrón entre comillas para que la shell no los expanda primero.
dpkg-query -l 'nginx*'
Los primeros tres caracteres de la salida indican respectivamente la acción deseada, el estado actual y el estado de error. ii, que se ve con frecuencia, significa que se desea la instalación y que el estado actual es instalado.
| Indicación | Significado |
|---|---|
ii |
Se desea la instalación y actualmente está instalado correctamente. |
rc |
El archivo del paquete ha sido eliminado, pero los archivos de configuración permanecen. |
iU |
El archivo fue descomprimido, pero la configuración no se ha completado. |
| Estado en mayúsculas | Puede estar en un estado incompleto o grave, por lo que se debe verificar el estado detallado y los registros de trabajo del paquete. |
Verificar versión instalada y candidato del repositorio
Mostrar solo la versión actualmente instalada
dpkg-query -W -f='${binary:Package}\t${Version}\n' curl
binary:Package agrega arquitectura al nombre si es necesario en paquetes Multi-Arch para diferenciarlos. Para comparación de versiones o comparación de listas entre servidores, es más seguro usar este valor que el campo general Package.
Comparar versión instalada con candidato de actualización
apt-cache policy curl
Installed es la versión actual, Candidate es la versión candidata seleccionada desde la configuración activa del repositorio. Los metadatos del repositorio pueden estar desactualizados, por lo que antes de juzgar la actualización se debe ejecutar sudo apt update.
Verificar archivos instalados por el paquete
Lista de archivos incluidos en el paquete
dpkg-query -L nginx
Este comando muestra la lista de archivos registrada en la base de datos de dpkg. No es un comando que muestre todos los archivos, incluidos los nuevos archivos de registro, caché, carga y base de datos creados después de la instalación.
Verificación del paquete propietario de un archivo específico
dpkg-query -S /usr/bin/curl
Si el archivo es un enlace simbólico, también se consulta la ruta del destino real.
readlink -f /usr/bin/python3
dpkg-query -S "$(readlink -f /usr/bin/python3)"
dpkg-query -S busca la propiedad de rutas conocidas en la base de datos local de dpkg; no busca en todos los paquetes disponibles del repositorio. Para averiguar qué paquete no instalado ofrece un archivo, necesita índices y herramientas como apt-file.
Diferenciación entre instalación manual y automática de paquetes
APT registra diferenciando entre paquetes que el usuario seleccionó directamente y paquetes que se instalaron automáticamente como dependencias.
apt-mark showmanual
apt-mark showauto
Los resultados de showmanual pueden incluir no solo programas que el usuario instaló directamente más tarde, sino también metapaquetes que componen la instalación predeterminada de Ubuntu y elementos que la imagen inicial mostró como instalados manualmente. Por lo tanto, no se debe concluir la ruta de instalación o el propósito del uso solo con esta lista.
Las dependencias de instalación automática, que ya no requieren ningún paquete manual, pueden ser propuestas para autoremove. Antes de eliminarlas, asegúrese de revisar los candidatos y el alcance del impacto.
sudo apt autoremove --dry-run
Guardar un inventario de la base de datos de dpkg
El siguiente comando guarda nombres, versiones y arquitecturas de los registros de dpkg separados por tabuladores. No filtra por estado: puede incluir entradas de paquetes retirados. Use el filtro de estado explicado antes si necesita exclusivamente los instalados y conserve también el estado en un inventario de diagnóstico. El nombre de salida se sobrescribe: elija un nombre nuevo o preserve el anterior.
dpkg-query -W -f='${binary:Package}\t${Version}\t${Architecture}\n' \
| sort > installed-packages.tsv
Para comparar dos capturas, guárdelas realmente con nombres distintos y sustituya los dos nombres de ejemplo siguientes. Un estado de salida 1 de diff significa diferencias; no implica por sí solo un error de lectura.
diff -u installed-packages-before.tsv installed-packages-after.tsv
Este archivo es un inventario que registra el estado en ese momento y no un medio de recuperación completo. En otras versiones de Ubuntu puede que no existan las mismas versiones, y los paquetes de repositorios, PPA, Snap, la configuración local y los datos de aplicaciones deben guardarse por separado.
Distinción entre paquetes Deb y Snap
apt y dpkg-query consultan paquetes Deb. Las aplicaciones instaladas mediante Snap deben verificarse con un comando separado.
snap list
Si se necesita un inventario completo del software del servidor, se deben verificar por separado los paquetes Deb, Snap, las imágenes de contenedores, los gestores de paquetes por lenguaje y los programas de instalación manual.
Resumen de comandos por propósito
| Propósito de verificación | Comando recomendado |
|---|---|
| Lista completa de paquetes Deb | apt list --installed |
| Salida de nombre y versión estandarizados | dpkg-query -W -f='FORMATO' |
| Estado de un paquete específico | dpkg-query -s PAQUETE |
| Versión instalada y versión candidata | apt-cache policy PAQUETE |
| Archivos instalados por el paquete | dpkg-query -L PAQUETE |
| Paquete propietario de un archivo | dpkg-query -S RUTA_DEL_ARCHIVO |
| Elementos que muestran instalación manual | apt-mark showmanual |
| Lista de paquetes Snap | snap list |
Puntos a tener en cuenta al verificar
- Si busca paquetes con
grep, pueden aparecer también otros paquetes que compartan parte del nombre. Para un juicio exacto sobre la instalación, usedpkg-query -so-W. dpkg-query -lpuede mostrar elementos que solo tienen configuraciones además de los paquetes instalados actualmente, por lo que debe leer también la columna de estado.- No se puede determinar si un servicio se está ejecutando solo con la lista de paquetes. El estado del servicio se verifica por separado con herramientas de administración del servicio, como
systemctl status. - Antes de eliminar un paquete que parezca innecesario, verifique las dependencias, los metapaquetes y el impacto en las funciones operativas.




