Gestión de repositorios: sources.list, PPAs y claves GPG

Introducción

APT obtiene los paquetes de repositorios: servidores que alojan colecciones de paquetes .deb junto a índices firmados digitalmente. La configuración de los repositorios activos se almacena en /etc/apt/sources.list y en ficheros adicionales dentro de /etc/apt/sources.list.d/.

/etc/apt/sources.list

Cada línea activa define un repositorio con el formato:


deb [opciones] URI distribución componente(s)
          

Ejemplo de sources.list en Debian 12 (Bookworm):


deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free
deb http://security.debian.org/debian-security bookworm-security main
          
  • deb → repositorio de paquetes binarios (deb-src para fuentes)
  • bookworm → nombre de la distribución (codename)
  • main → software libre; contrib → software libre con dependencias no libres; non-free → software privativo

Ejemplo en Ubuntu 24.04 (Noble):


deb http://es.archive.ubuntu.com/ubuntu noble main restricted universe multiverse
deb http://es.archive.ubuntu.com/ubuntu noble-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu noble-security main restricted universe multiverse
          

/etc/apt/sources.list.d/

Los repositorios de terceros se colocan en ficheros independientes dentro de este directorio. Cada fichero tiene extensión .list (formato clásico) o .sources (formato DEB822, moderno).


# /etc/apt/sources.list.d/docker.list
deb [arch=amd64 signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu noble stable
          

Formato DEB822 moderno (.sources):


Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: noble
Components: stable
Architectures: amd64
Signed-By: /usr/share/keyrings/docker.gpg
          

Claves GPG y verificación de firmas

Cada repositorio firma sus índices con una clave GPG. APT verifica esta firma para garantizar la integridad y autenticidad de los paquetes. La forma moderna es almacenar la clave en /usr/share/keyrings/ y referenciarla con signed-by= en la línea del repositorio.

Añadir una clave GPG (método moderno):


# curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  | gpg --dearmor -o /usr/share/keyrings/docker.gpg
# chmod a+r /usr/share/keyrings/docker.gpg
          

El método antiguo con apt-key add está obsoleto desde Debian 11 / Ubuntu 22.04.

Listar claves del anillo legacy (si existieran):


$ apt-key list
          

PPAs en Ubuntu

Los PPA (Personal Package Archives) son repositorios alojados en Launchpad que permiten a desarrolladores distribuir versiones más recientes o software no incluido en los repositorios oficiales de Ubuntu.

Añadir un PPA:


# add-apt-repository ppa:ondrej/php
# apt update
# apt install php8.3
          

Eliminar un PPA:


# add-apt-repository --remove ppa:ondrej/php
# apt update
          

Los PPAs son convenientes pero implican confiar en el mantenedor. Úsalos solo de fuentes reconocidas.

Gestión de repositorios con apt


# apt update                     # refrescar índices de todos los repositorios
$ apt-cache policy               # ver repositorios activos y sus prioridades
          

Mantén los repositorios al mínimo necesario y verifica siempre que las claves GPG procedan de fuentes oficiales antes de añadir repositorios de terceros.

Comandos principales de APT

Índice de la sección

Índice del curso