6.1 Repositorios y APT
tutorial.getReady
- Comprenderás la filosofía de seguridad de los “Repositorios” oficiales y cómo añadir fuentes externas.
- Dominarás el cirujano de bajo nivel
dpkgpara instalar archivos locales y gestionar paquetes rotos. - Sabrás utilizar el gestor de alto nivel
apty sus variantes (apt-get,apt-cache) para resolver dependencias. - Aprenderás a eliminar software limpiando su configuración global (
purge). - Auditarás orígenes externos editando
/etc/apt/sources.listy/etc/apt/sources.list.d/.
1. La Filosofía del Repositorio
Sección titulada “1. La Filosofía del Repositorio"En Windows o macOS, la norma es abrir el navegador y buscar un .exe o .dmg en una web aleatoria. En Linux empresarial, esa práctica está estrictamente desaconsejada por seguridad y trazabilidad.
El software en Debian se descarga desde inmensas bibliotecas centrales verificadas criptográficamente llamadas Repositorios. El ciclo de vida se divide en:
- Bajo nivel (dpkg): Manipula los paquetes
.debque ya están en tu disco. - Alto nivel (APT / Aptitude): Busca en internet, resuelve dependencias y llama a
dpkgen segundo plano.
2. El Cirujano Local: dpkg
Sección titulada “2. El Cirujano Local: dpkg"dpkg (Debian Package) es la herramienta fundamental de bajo nivel. Solo sirve para archivos .deb que tengas físicamente en el sistema.
# Instalar un paquete .deb localsudo dpkg -i google-chrome.deb
# Si falla por dependencias, forzar la instalación (PELIGROSO, solo para emergencias)sudo dpkg --force-depends -i google-chrome.deb
# Listar TODOS los paquetes del sistema (con su estado)dpkg -l
# Ver el estado EXACTO de un paquete específicodpkg -s nginx
# Listar todos los ficheros que instaló un paquetedpkg -L nginx
# Averiguar a qué paquete pertenece un fichero concretodpkg -S /usr/sbin/nginx3. El Gestor de Alto Nivel: apt (y sus primos)
Sección titulada “3. El Gestor de Alto Nivel: apt (y sus primos)"apt es la interfaz unificada, pero en el examen LFCS también verás apt-get y apt-cache. apt se conecta a internet, descarga el programa, resuelve todas las dependencias y pasa el trabajo a dpkg.
El flujo diario del Sysadmin
Sección titulada “El flujo diario del Sysadmin"1. Actualizar el Índice de Paquetes (update)
Sincroniza la lista de software disponible con los repositorios remotos.
sudo apt update# Equivalente legacy: sudo apt-get update2. Buscar e Inspeccionar (search / show)
apt search mariadb # Busca por nombre o descripciónapt show nginx # Muestra versión, dependencias, tamaño y descripción# Equivalente legacy: apt-cache show nginx3. Instalar y Actualizar
# Instalar un programa (resuelve dependencias automáticamente)sudo apt install nginx
# Actualizar paquetes (solo los que no requieren instalar/eliminar otros)sudo apt upgrade# Equivalente legacy: sudo apt-get upgrade
# Actualizar TODO el sistema (permite instalar nuevas dependencias o eliminar obsoletas)sudo apt dist-upgrade# Equivalente legacy: sudo apt-get dist-upgrade4. Amputar Definitivamente (Eliminar)
# Elimina el paquete pero DEJA los archivos de configuración global (/etc/)sudo apt remove nginx
# Elimina el paquete y BORRA los archivos de configuración global (/etc/)sudo apt purge nginx
# Auto-eliminar paquetes que ya no son necesarios (dependencias huérfanas)sudo apt autoremove4. La Configuración de Orígenes: sources.list
Sección titulada “4. La Configuración de Orígenes: sources.list"apt sabe dónde comprar porque le damos una dirección en /etc/apt/sources.list. También puedes dividir configuraciones en /etc/apt/sources.list.d/ (útil para repositorios de terceros como Docker o Kubernetes).
Estructura de una línea estándar:
deb http://deb.debian.org/debian bookworm main contrib non-free| Componente | Descripción |
| :--- | :--- |
| deb | Paquetes binarios compilados (los que usas al instalar). deb-src es para código fuente (desarrolladores). |
| URL | El servidor o mirror que aloja los paquetes (puedes cambiarlo por mirrors más rápidos). |
| Distribución | El nombre en clave de tu versión (ej. bookworm=12, bullseye=11). Nunca mezcles versiones distintas. |
| Componentes | main (100% libre), contrib (libre pero depende de no-libre), non-free (software propietario), non-free-firmware (firmwares de hardware desde Bookworm). |
¿Cómo añadir un repositorio externo? (Ejemplo: Docker)
Sección titulada “¿Cómo añadir un repositorio externo? (Ejemplo: Docker)"El proceso siempre es el mismo:
- Importar la clave GPG del repositorio para verificar que los paquetes son auténticos.
- Crear un archivo
.listen/etc/apt/sources.list.d/. - Ejecutar
sudo apt updatepara refrescar el índice.
# 1. Agregar la clave GPG para verificar la autenticidadsudo mkdir -p /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 2. Crear un archivo específico en sources.list.d/echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian bookworm stable" | sudo tee /etc/apt/sources.list.d/docker.list
# 3. ¡IMPORTANTE! Actualizar el índice para que APT reconozca el nuevo repositoriosudo apt update && sudo apt install docker-ce5. Registro de Actividad y Reparación
Sección titulada “5. Registro de Actividad y Reparación"Logs (Bitácora de auditoría):
apt guarda todo lo que haces en /var/log/apt/history.log (histórico de comandos) y los errores detallados en /var/log/apt/term.log. Si un compañero rompió el sistema, aquí encontrarás al culpable.
Reparar Paquetes Rotos:
Si dpkg dejó un paquete a medias (estado “half-installed”), el comando milagroso es:
sudo apt install -fEste comando (fix-broken) intentará resolver las dependencias pendientes o eliminar paquetes rotos.
6. El Arte de Eliminar Software
Sección titulada “6. El Arte de Eliminar Software"Si ejecutas sudo apt remove nginx, el programa se desinstala, sí. Pero deja atrás en el disco duro todos los archivos de configuración (/etc/nginx) intactos por si te arrepientes “el año que viene” y lo vuelves a instalar.
En producción, a menudo queremos eliminar las huellas absolutas de un software mal configurado para empezar totalmente desde cero. Para amputaciones totales, jamás usamos remove, usamos el Purgante:
# Purga: Desinstala y adicionalmente destruye toda huella de configuración GLOBAL (/etc/).# NOTA: No borra configuraciones de usuario en /home/.sudo apt purge nginx
# Barrido general: Un comando vital que audita si han quedado librerías huérfanas# que se bajaron hace meses como dependencias de un software que ya borraste.# Solo elimina paquetes que fueron instalados automáticamente.sudo apt autoremove7. Bloquear versiones con apt-mark (Holding)
Sección titulada “7. Bloquear versiones con apt-mark (Holding)"En producción es crítico poder fijar una versión de un paquete para evitar que apt upgrade lo actualice automáticamente (p.ej. un kernel o una versión de MySQL validada en un entorno crítico):
# Bloquear un paquete (hold) — no se actualizará con `apt upgrade`sudo apt-mark hold nginx
# Ver todos los paquetes bloqueadosapt-mark showhold
# Desbloquear para permitir actualizacionessudo apt-mark unhold nginxComprueba tus conocimientos
Sección titulada “Comprueba tus conocimientos"-
Un compañero te da un archivo descargado de internet llamado
teams-linux.deb. Lo ejecutas consudo dpkg -i teams-linux.debe inmediatamente el terminal vomita líneas rojas indicando “Unmet dependencies” arruinando la instalación. Tu compañero te dice que no te preocupes, que uses otro comando mágico deaptque escanea las catástrofes dedpkginstaladas a medias, viaja a internet, baja las dependencias que faltaban y parchea la instalación rota sanándola completamente. ¿Cuál es ese comando? -
Editando el fichero
/etc/apt/sources.listhas sustituido la palabra “bookworm” (Debian 12) por “trixie” (el inestable y futuro Debian 13). Has guardado el archivo. Emocionado, a los diez segundos escribessudo apt install firefoxesperando tener la versión experimental moderna de dicho Firefox, pero el servidor te instala la vieja que ya tenías ayer ¿Por qué falló tu experimento? -
Existe un servicio web crítico de backend que está fallando por estar mal configurado en
/etc/. Tu jefe te ordena “desinstalarlo y volver a instalarlo completamente limpio y de fábrica” para borrar las huellas del desastre. Tiras unsudo apt remove backendpara después tirarle unsudo apt install backend. El programa arranca y… ¡vuelve a fallar usando la configuración vieja! ¿Qué orden erraste? -
Has bloqueado el kernel de tu servidor con
sudo apt-mark hold linux-image-amd64para evitar que una actualización automática rompa tu sistema. Tiempo después, descubres una vulnerabilidad crítica en el kernel y necesitas actualizarlo manualmente. ¿Qué secuencia de comandos es correcta para aplicar el parche de seguridad? -
Un desarrollador te pide que instales un paquete llamado
super-appque está en un repositorio externo. Sigues los pasos: añades la clave GPG, creas el archivo en/etc/apt/sources.list.d/super-app.listcon la URL correcta y ejecutassudo apt install super-app. APT te responde: “Unable to locate package super-app”. ¿Qué te has saltado?