Introducción
El software de Ubuntu normalmente se distribuye en forma de paquetes. Los repositorios publican archivos de paquetes junto con metadatos que describen sus nombres, versiones, dependencias y ubicaciones de descarga. apt trabaja con los repositorios y resuelve las dependencias; dpkg gestiona, en un nivel más bajo, la base de datos de paquetes .deb instalados.
Actualizarás los metadatos, buscarás un paquete antes de instalarlo, inspeccionarás un paquete instalado, lo eliminarás e instalarás un archivo .deb local de forma reproducible. Todos los cambios se realizan con un paquete de práctica desechable y pueden verificarse a partir del estado de los paquetes, sin depender del historial de la terminal.
Leer el estado de los paquetes y las fuentes
En este paso distinguirás entre la configuración de los repositorios, los metadatos disponibles y el estado de los paquetes instalados.
Inspecciona las definiciones de fuentes habilitadas. Las imágenes modernas de Ubuntu pueden utilizar archivos .list o .sources. Esta tubería de solo lectura busca en ambas ubicaciones: grep -R realiza una búsqueda recursiva, -h oculta los nombres de los archivos de origen, -s suprime los mensajes sobre archivos inexistentes y -E habilita el patrón agrupado. head limita la salida a doce líneas coincidentes:
grep -RhsE '^(deb |Types:|URIs:|Suites:)' /etc/apt/sources.list /etc/apt/sources.list.d 2>/dev/null | head -n 12
Consulta a dpkg si Bash está instalado. -W selecciona los registros de paquetes, mientras que -f proporciona un formato de salida. ${Package}, ${Version} y ${db:Status-Status} son campos de dpkg, no variables del shell, porque el formato está entre comillas simples:
dpkg-query -W -f='package=${Package} version=${Version} status=${db:Status-Status}\n' bash
dpkg-query lee el estado local de los paquetes instalados. En cambio, apt-cache policy compara la versión instalada con las versiones conocidas de los repositorios configurados:
apt-cache policy bash
Guarda una observación estable del estado de instalación:
mkdir -p /home/labex/project/package-lab
dpkg-query -W -f='${Package} ${db:Status-Status}\n' bash > /home/labex/project/package-lab/bash-state.txt
cat /home/labex/project/package-lab/bash-state.txt
Actualizar los metadatos de los repositorios
En este paso actualizarás el índice de paquetes y comprenderás qué modifica apt update.
Ejecuta:
sudo apt update
Este comando descarga los metadatos actuales de los repositorios. No instala las versiones más recientes de todos los paquetes; apt upgrade es la operación independiente que actualiza los paquetes instalados.
Inspecciona el directorio de caché de metadatos:
ls -ld /var/lib/apt/lists
find /var/lib/apt/lists -maxdepth 1 -type f | head
Registra cuántos archivos normales de metadatos hay:
find /var/lib/apt/lists -maxdepth 1 -type f | wc -l | tr -d ' ' > /home/labex/project/package-lab/index-file-count.txt
cat /home/labex/project/package-lab/index-file-count.txt
Buscar, inspeccionar e instalar un paquete del repositorio
En este paso investigarás un paquete antes de instalarlo.
Busca en los nombres y las descripciones de los paquetes la utilidad para listar árboles de directorios:
apt search '^tree$'
Consulta sus metadatos:
apt show tree
Instálala gestionando sus dependencias. sudo proporciona los privilegios administrativos necesarios y -y responde automáticamente afirmativamente a esta solicitud de instalación ya revisada:
sudo apt install -y tree
Verifica tanto el estado del paquete como la ubicación del comando y, después, utilízalo:
dpkg-query -W -f='${Package} ${Version} ${db:Status-Status}\n' tree | tee /home/labex/project/package-lab/tree-installed.txt
command -v tree
tree -L 1 /home/labex/project/package-lab
Enumera las rutas proporcionadas por el paquete:
dpkg -L tree | head
Eliminar un paquete y verificar el resultado
En este paso eliminarás el paquete de práctica del repositorio y distinguirás entre varias operaciones de limpieza relacionadas.
Elimina tree:
sudo apt remove -y tree
remove elimina los programas instalados por el paquete, pero puede conservar su configuración. purge también elimina la configuración propiedad del paquete. autoremove elimina las dependencias que se instalaron automáticamente y que ya no son necesarias; en un sistema real, revisa su propuesta antes de confirmarla.
Previsualiza la limpieza de dependencias sin modificar el sistema. La opción --dry-run realiza el cálculo, pero no elimina nada:
sudo apt autoremove --dry-run | tee /home/labex/project/package-lab/autoremove-preview.txt
Lee las acciones propuestas antes de ejecutar apt autoremove sin --dry-run, especialmente en un host compartido o de producción.
La sesión actual de Bash puede recordar la ruta antigua de un comando. Borra esa caché de ubicaciones, verifica que el comando haya desaparecido y registra el estado en la base de datos de paquetes:
hash -r
command -v tree || echo "tree command is unavailable"
dpkg-query -W -f='${db:Status-Status}\n' tree 2>/dev/null || echo "not-installed" | tee /home/labex/project/package-lab/tree-removed.txt
Asegura un indicador estable, independientemente de que dpkg conserve o no un registro residual:
if dpkg-query -W -f='${db:Status-Status}' tree 2>/dev/null | grep -qx installed; then echo "still-installed"; else echo "not-installed"; fi > /home/labex/project/package-lab/tree-removed.txt
cat /home/labex/project/package-lab/tree-removed.txt
Inspeccionar e instalar un paquete deb local
En este paso inspeccionarás un archivo .deb preparado, lo instalarás mediante apt, ejecutarás su comando y lo eliminarás correctamente.
Accede al espacio de trabajo e inspecciona los metadatos y el contenido del paquete sin instalarlo:
cd /home/labex/project/package-lab
dpkg-deb -I labex-greeter_1.0_all.deb
dpkg-deb -c labex-greeter_1.0_all.deb
El prefijo ./ indica a apt que se trata de un archivo local y no del nombre de un paquete del repositorio:
sudo apt install -y ./labex-greeter_1.0_all.deb
Consúltalo y ejecútalo:
dpkg-query -W -f='${Package} ${Version} ${db:Status-Status}\n' labex-greeter
labex-greeter | tee local-package-output.txt
Elimina el paquete después de la prueba y demuestra que el comando incluido ya no está disponible:
sudo apt remove -y labex-greeter
if command -v labex-greeter >/dev/null; then echo "still-installed"; else echo "local-package-removed"; fi > local-package-state.txt
cat local-package-state.txt
Resumen
Has distinguido entre los metadatos de los repositorios y el estado de los paquetes instalados, actualizado los índices de apt, investigado un paquete antes de instalarlo, verificado sus archivos y la ubicación de su comando, eliminado un paquete del repositorio y completado el ciclo de vida de un archivo .deb local inspeccionado.



