0%
Debian y Ubuntu: Guía de Administración Completa

Debian y Ubuntu: Guía de Administración Completa

Aprende a administrar Debian y Ubuntu: APT, repositorios, PPA, dpkg, actualizaciones de versión y resolución de problemas. Guía completa con ejemplos prácticos.

I

InSkillCoach

· min

Debian y Ubuntu: Guía de Administración Completa

Debian y Ubuntu forman la familia de distribuciones Linux más extendida del mundo, tanto en servidores como en equipos de escritorio. Si te estás iniciando en la administración de sistemas, es muy probable que tu primera máquina Linux funcione con una de estas dos distribuciones. En esta guía vamos a cubrir todo lo que necesitas para administrar un sistema Debian o Ubuntu en el día a día: la gestión de paquetes con APT, la configuración de repositorios, las actualizaciones de versión y la resolución de los problemas más habituales.

1. Debian y Ubuntu: ¿Qué Diferencias Hay?

Ubuntu está construido a partir de Debian: aproximadamente el 90 % de los paquetes de Ubuntu provienen directamente de los repositorios de Debian. Ambas distribuciones comparten, por tanto, el mismo formato de paquetes (.deb), el mismo gestor APT y gran parte de su documentación. Sin embargo, difieren en varios puntos importantes.

CriterioDebianUbuntu
EditorProyecto comunitarioCanonical (empresa)
Ciclo de lanzamientoAproximadamente cada 2 años, «cuando está listo»Cada 6 meses, fechas fijas
Versiones LTSCada versión estable (~5 años con LTS)Una LTS cada 2 años (5 años de soporte)
EstabilidadMuy conservadora, paquetes probadosPaquetes más recientes
Software propietarioSeparado (non-free)Integrado con mayor facilidad
SnapAusente por defectoInstalado y utilizado por defecto
Público objetivoServidores, puristas del software librePrincipiantes, escritorio, cloud

En resumen: Debian prioriza la estabilidad y la libertad del software; Ubuntu prioriza la facilidad de uso y la actualidad de los paquetes. Para un servidor de producción, ambas son excelentes opciones.

2. Entender el Ciclo de Versiones y las LTS

Las versiones de Ubuntu

Ubuntu publica una versión cada seis meses, numerada con el año y el mes de lanzamiento: 24.04 significa abril de 2024. Cada dos años, la versión de abril es una LTS (Long Term Support) con cinco años de soporte. Las versiones intermedias solo reciben soporte durante nueve meses.

# Mostrar la versión instalada
lsb_release -a

# Alternativa sin lsb_release
cat /etc/os-release

Regla sencilla: en un servidor, instala siempre una LTS (20.04, 22.04, 24.04…). Las versiones intermedias se reservan para los equipos de escritorio de usuarios que quieren las últimas novedades.

Las versiones de Debian

Debian mantiene tres ramas en paralelo:

  • stable: la versión de producción, actualizada únicamente por seguridad;
  • testing: la futura versión estable, en preparación;
  • unstable (sid): la rama de desarrollo, donde llegan los nuevos paquetes.

Cada versión estable lleva un nombre en clave tomado de los personajes de Toy Story (Bookworm, Trixie…). Una versión estable cuenta con soporte del equipo de seguridad durante unos tres años, y después dos años adicionales por parte del proyecto LTS.

3. APT en Profundidad

APT (Advanced Package Tool) es la herramienta central de la gestión de paquetes. Estos son los comandos que usarás a diario.

Actualizar la lista de paquetes

# Descarga los índices de los repositorios (no modifica nada en el sistema)
sudo apt update

Este comando no actualiza nada: simplemente refresca la lista de paquetes disponibles. Conviene ejecutarlo siempre antes de una instalación o una actualización.

Actualizar los paquetes instalados

# Actualiza los paquetes sin eliminar ni instalar otros nuevos
sudo apt upgrade

# Actualiza permitiendo la instalación o eliminación de paquetes
# (necesario para las actualizaciones del kernel, por ejemplo)
sudo apt full-upgrade

La diferencia es importante: upgrade rechaza cualquier actualización que requiera eliminar un paquete, mientras que full-upgrade (antes dist-upgrade) acepta resolver los cambios de dependencias. En un servidor, acostúmbrate a leer con atención lo que propone full-upgrade antes de confirmar.

Instalar y eliminar paquetes

# Instalar un paquete
sudo apt install nginx

# Instalar varios paquetes de una vez
sudo apt install curl git htop

# Eliminar un paquete conservando sus archivos de configuración
sudo apt remove nginx

# Eliminar un paquete Y sus archivos de configuración
sudo apt purge nginx

# Eliminar las dependencias que ya no son necesarias
sudo apt autoremove

Ejecuta apt autoremove con regularidad: cuando eliminas un paquete, sus dependencias siguen instaladas y se acumulan con el tiempo.

Buscar e inspeccionar paquetes

# Buscar un paquete por palabra clave
apt search "serveur web"

# Mostrar los detalles de un paquete (versión, tamaño, dependencias, descripción)
apt show nginx

# Listar las versiones disponibles y su procedencia
apt-cache policy nginx

# Listar las dependencias de un paquete
apt-cache depends nginx

# Listar los paquetes que dependen de un paquete
apt-cache rdepends nginx

El pinning: fijar o priorizar versiones

El pinning permite controlar qué versión de un paquete debe preferir APT, por ejemplo para impedir una actualización o para obtener un paquete de un repositorio concreto.

# Impedir cualquier actualización de un paquete (método sencillo)
sudo apt-mark hold nginx

# Volver a permitir las actualizaciones
sudo apt-mark unhold nginx

# Listar los paquetes bloqueados
apt-mark showhold

Para un control más fino, crea un archivo en /etc/apt/preferences.d/:

# /etc/apt/preferences.d/nginx-pin
# Prioridad > 1000: fuerza esta versión incluso si hay que hacer un downgrade
Package: nginx
Pin: version 1.24.*
Pin-Priority: 1001

4. sources.list y los Repositorios

Dónde se definen los repositorios

Los repositorios de APT se declaran en /etc/apt/sources.list y en los archivos del directorio /etc/apt/sources.list.d/. En las versiones recientes (Debian 12+, Ubuntu 24.04+), el formato «deb822» en archivos .sources sustituye progresivamente al formato antiguo.

# Formato antiguo (una línea por repositorio)
# tipo  URL  distribución  componentes
deb http://deb.debian.org/debian bookworm main contrib non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main

Los componentes tienen un significado preciso:

  • main: software libre con soporte oficial;
  • contrib (Debian): software libre que depende de software no libre;
  • non-free / non-free-firmware (Debian): software y firmware propietarios;
  • universe / multiverse (Ubuntu): paquetes comunitarios y no libres.

Modificar los repositorios correctamente

# No modifiques nunca sources.list a mano sin hacer una copia de seguridad
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# Añade mejor tus repositorios de terceros en archivos separados
sudo nano /etc/apt/sources.list.d/mon-depot.list

# Tras cualquier modificación, refresca los índices
sudo apt update

Los repositorios de terceros modernos exigen una clave de firma almacenada en /etc/apt/keyrings/ y referenciada con la opción signed-by:

# Ejemplo: añadir el repositorio oficial de Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo "deb [signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu noble stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list

5. Los PPA en Ubuntu

Los PPA (Personal Package Archives) son repositorios personales alojados en Launchpad, propios del ecosistema Ubuntu. Permiten obtener versiones más recientes de un software que las de los repositorios oficiales.

# Añadir un PPA (añade el repositorio y su clave automáticamente)
sudo add-apt-repository ppa:ondrej/php
sudo apt update

# Eliminar un PPA
sudo add-apt-repository --remove ppa:ondrej/php

# Eliminar un PPA y volver a las versiones oficiales de los paquetes
sudo apt install ppa-purge
sudo ppa-purge ppa:ondrej/php

Atención: un PPA lo mantiene una persona o un equipo ajeno a la distribución. Añade únicamente PPA de fuentes reconocidas y evítalos en servidores de producción cuando exista una alternativa oficial.

6. dpkg: el Nivel Bajo

APT se apoya en dpkg, la herramienta de bajo nivel que realmente instala los archivos .deb. Lo necesitarás en algunas situaciones concretas.

# Instalar un archivo .deb descargado manualmente
sudo dpkg -i paquet.deb

# Si dpkg indica dependencias que faltan, deja que APT las resuelva
sudo apt install -f

# Método moderno recomendado: apt gestiona el .deb Y sus dependencias
sudo apt install ./paquet.deb

# Listar todos los paquetes instalados
dpkg -l

# Comprobar si un paquete está instalado
dpkg -l | grep nginx

# Listar los archivos instalados por un paquete
dpkg -L nginx

# Encontrar a qué paquete pertenece un archivo
dpkg -S /etc/nginx/nginx.conf

7. Actualización de Versión

Ubuntu: do-release-upgrade

Ubuntu proporciona una herramienta específica para pasar de una versión a la siguiente:

# 1. Actualizar completamente el sistema antes de nada
sudo apt update && sudo apt full-upgrade
sudo reboot

# 2. Lanzar la actualización de versión
sudo do-release-upgrade

# Comprobar el comportamiento configurado (lts o normal)
cat /etc/update-manager/release-upgrades

Con Prompt=lts en este archivo, la herramienta solo propone el paso de una LTS a otra LTS (de 22.04 a 24.04, por ejemplo), que es el ajuste recomendado en servidores. Ten en cuenta que la actualización de una LTS a la siguiente solo se ofrece tras la publicación de la primera versión de mantenimiento (24.04.1, por ejemplo).

Debian: modificación de los repositorios

En Debian, la actualización de versión se realiza cambiando el nombre en clave en los repositorios y lanzando después una actualización completa:

# 1. Hacer una copia de seguridad y sustituir el nombre en clave (p. ej. bookworm -> trixie)
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list

# 2. Actualización en dos fases, como recomiendan las notas de la versión
sudo apt update
sudo apt upgrade --without-new-pkgs
sudo apt full-upgrade
sudo reboot

En cualquier caso: haz una copia de seguridad completa antes de la actualización, lee las notas de la versión y no te saltes nunca una versión (pasar directamente de Debian 11 a 13 no está soportado).

8. Actualizaciones Automáticas con unattended-upgrades

En un servidor, aplicar automáticamente los parches de seguridad es una buena práctica casi imprescindible.

# Instalación y activación
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

La configuración se encuentra en /etc/apt/apt.conf.d/50unattended-upgrades:

// Extracto de configuración típica
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
};
// Reinicio automático si es necesario (p. ej. actualización del kernel)
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
# Probar la configuración sin aplicar nada
sudo unattended-upgrade --dry-run --debug

# Consultar los registros
less /var/log/unattended-upgrades/unattended-upgrades.log

9. Snap vs APT

Ubuntu impulsa el formato Snap, paquetes autocontenidos que incluyen sus propias dependencias. El tema divide opiniones y conviene entender las ventajas e inconvenientes.

CriterioAPT (.deb)Snap
DependenciasCompartidas entre paquetesIncluidas en cada snap
Tamaño en discoReducidoElevado (bibliotecas duplicadas)
Actualidad de las versionesFija durante la vida de la versiónSiempre la última versión
ActualizacionesControladas por el administradorAutomáticas (difíciles de bloquear)
Arranque de las aplicacionesRápidoMás lento (montaje de squashfs)
Aislamiento de seguridadNinguno por defectoConfinamiento en sandbox
DisponibilidadTodas las distribuciones .debPrincipalmente Ubuntu
# Comandos básicos de snap
snap list                      # snaps instalados
sudo snap install code --classic
sudo snap refresh              # actualizar
sudo snap remove code

En la práctica: en un servidor, da prioridad a APT para todo lo que esté disponible en .deb. Los snaps siguen siendo pertinentes para aplicaciones de escritorio recientes o herramientas que el editor solo distribuye de este modo.

10. Resolución de Problemas Habituales

Bloqueo de dpkg: «Could not get lock»

Este mensaje aparece cuando otro proceso ya está utilizando APT (a menudo una actualización automática en segundo plano):

# Identificar el proceso que mantiene el bloqueo
sudo lsof /var/lib/dpkg/lock-frontend

# Esperar a que termine, o comprobar los procesos apt en curso
ps aux | grep -E "apt|dpkg"

Elimina manualmente el archivo de bloqueo solo como último recurso, tras comprobar que no se está ejecutando ningún proceso apt o dpkg: eliminar el bloqueo durante una instalación en curso puede corromper la base de datos de paquetes.

# Solo como último recurso, si no hay ningún proceso activo
sudo rm /var/lib/dpkg/lock-frontend /var/lib/dpkg/lock
sudo dpkg --configure -a

Dependencias rotas

# Intentar la reparación automática
sudo apt install -f

# Terminar la configuración de los paquetes interrumpidos
sudo dpkg --configure -a

# Limpiar la caché y volver a descargar los índices
sudo apt clean
sudo apt update

# Reinstalar un paquete dañado
sudo apt install --reinstall nom-du-paquet

Espacio en disco saturado por la caché de APT

# Ver el tamaño de la caché
du -sh /var/cache/apt/archives

# Eliminar únicamente los .deb de versiones obsoletas
sudo apt autoclean

# Vaciar completamente la caché
sudo apt clean

Buenas Prácticas

  • En servidores, instala únicamente versiones LTS (Ubuntu) o stable (Debian).
  • Ejecuta sudo apt update antes de cualquier instalación o actualización.
  • Lee la lista de cambios propuestos por full-upgrade antes de confirmar.
  • Activa unattended-upgrades para los parches de seguridad.
  • Añade los repositorios de terceros en /etc/apt/sources.list.d/ con una clave signed-by, nunca en el archivo principal.
  • Limita los PPA a lo estrictamente necesario y evítalos en producción.
  • Haz una copia de seguridad completa antes de cada actualización de versión.
  • Limpia con regularidad con apt autoremove y apt autoclean.

Conclusión

Debian y Ubuntu ofrecen uno de los ecosistemas de gestión de paquetes más maduros del mundo Linux. Dominando APT, la estructura de los repositorios, los mecanismos de actualización de versión y los pocos reflejos de resolución de problemas que hemos visto aquí, tienes todo lo necesario para administrar estos sistemas con tranquilidad en el día a día. El siguiente paso lógico en tu aprendizaje: la gestión de servicios con systemd, la configuración del cortafuegos con ufw y la automatización de tus despliegues. Practica en una máquina virtual, rompe cosas, arréglalas: así es como se progresa.

InSkillCoach

Acerca de InSkillCoach

Experto en formación y tecnologías

Coach especializado en tecnologías avanzadas e IA, impulsado por GNeurone Inc.

Certificaciones:

  • AWS Certified Solutions Architect – Professional
  • Certificaciones de Google Cloud
  • Microsoft Certified: DevOps Engineer Expert
  • Certified Kubernetes Administrator (CKA)
  • CompTIA Security+
838
126

Comentarios

Los comentarios funcionan con GitHub Discussions

Inicia sesión con GitHub para participar en la discusión

¡Enlace copiado!