Introducción
El software de Ubuntu normalmente se distribuye como paquetes. Los repositorios publican archivos de paquetes junto con metadatos que describen sus nombres, versiones, dependencias y ubicaciones de descarga. apt trabaja con repositorios y resuelve dependencias; dpkg gestiona la base de datos de paquetes .deb instalados en un nivel inferior.
Actualizará los metadatos, buscará un paquete antes de instalarlo, inspeccionará un paquete instalado, lo eliminará e instalará un .deb local de forma determinista. Cada cambio utiliza un paquete de práctica desechable y puede verificarse a partir del estado de los paquetes, no del historial del terminal.
Leer el estado de los paquetes y las fuentes
En este paso, distinguirá entre la configuración de los repositorios, los metadatos disponibles y el estado de los paquetes instalados.
Inspeccione las definiciones de fuentes habilitadas. Las imágenes modernas de Ubuntu pueden utilizar archivos .list o .sources. Esta canalización de solo lectura busca en ambas ubicaciones: grep -R busca de forma recursiva, -h oculta los nombres de los archivos de origen, -s suprime los mensajes sobre archivos ausentes 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
Pregunte 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 de 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
Guarde 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á el índice de paquetes y comprenderá qué cambia apt update.
Ejecute:
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.
Inspeccione el directorio de la caché de metadatos:
ls -ld /var/lib/apt/lists
find /var/lib/apt/lists -maxdepth 1 -type f | head
Registre 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 de un repositorio
En este paso, investigará un paquete antes de instalarlo.
Busque en los nombres y las descripciones de los paquetes la utilidad para listar árboles de directorios:
apt search '^tree$'
Lea sus metadatos:
apt show tree
Instálelo gestionando sus dependencias. sudo proporciona los privilegios administrativos necesarios y -y responde automáticamente que sí a esta solicitud de instalación ya revisada:
sudo apt install -y tree
Verifique el estado del paquete y la ubicación del comando; después, utilícelo:
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
Muestre las rutas que proporciona el paquete:
dpkg -L tree | head
Eliminar un paquete y verificar el resultado
En este paso, eliminará el paquete de práctica del repositorio y distinguirá entre operaciones de limpieza relacionadas.
Elimine tree:
sudo apt remove -y tree
remove elimina los programas instalados por el paquete, pero puede conservar la configuración del paquete. 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; revise su propuesta antes de confirmarla en un host real.
Obtenga una vista previa de lo que haría 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
Lea 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 conservar la ruta antigua de un comando. Borre la caché de ubicación de comandos, compruebe que el comando ya no esté disponible y registre el estado de 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
Asegúrese de guardar 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á un .deb preparado, lo instalará mediante apt, ejecutará su comando y lo eliminará correctamente.
Acceda al espacio de trabajo e inspeccione 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últelo y ejecútelo:
dpkg-query -W -f='${Package} ${Version} ${db:Status-Status}\n' labex-greeter
labex-greeter | tee local-package-output.txt
Elimine el paquete después de probarlo y demuestre que el comando que proporcionaba 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
Ha distinguido entre los metadatos de los repositorios y el estado de los paquetes instalados, ha actualizado los índices de apt, ha investigado un paquete antes de instalarlo, ha verificado los archivos que proporciona y la ubicación del comando, ha eliminado un paquete del repositorio y ha completado el ciclo de vida de un .deb local inspeccionado.



