Instalación de software en Linux

LinuxBeginner
Practicar Ahora

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.