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-srcpara 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