Con la llegada de Debian 12 Bookworm y Ubuntu 22.04 Jammy Jellyfish, el sistema de gestión de paquetes APT introdujo un nuevo formato para definir repositorios: los archivos .sources
. Estos ficheros reemplazan progresivamente a los tradicionales .list
utilizados en /etc/apt/sources.list.d
, ofreciendo una estructura más clara, segura y flexible.
¿Qué es un archivo .sources?
Un archivo .sources
contiene la información de los repositorios APT en un formato basado en bloques con estilo INI. Cada bloque describe un repositorio y sus propiedades mediante campos con nombre explícito, eliminando ambigüedades y errores comunes del formato anterior.
Estos archivos se guardan en /etc/apt/sources.list.d/
y deben tener extensión .sources.
Estructura básica de un archivo .sources
Un ejemplo sencillo de fichero para añadir el repositorio de Puppet en Debian sería:
Types: deb
URIs: https://apt.puppet.com
Suites: bookworm
Components: puppet7
Architectures: amd64
Signed-By: /usr/share/keyrings/puppet-archive-keyring.gpg
Descripción de cada campo
- Types: Indica el tipo de repositorio (
deb
para binarios,deb-src
para código fuente). - URIs: Dirección o direcciones del repositorio. Pueden especificarse varias separadas por espacios.
- Suites: Define la distribución o rama (por ejemplo:
bookworm
,bullseye
,jammy
,stable
). - Components: Secciones del repositorio (
main
,contrib
,non-free
, etc.). - Architectures: (Opcional) Permite restringir la arquitectura (por ejemplo:
amd64
,arm64
). - Signed-By: Indica la ruta del archivo de clave GPG que firma el repositorio. Sustituye al obsoleto comando
apt-key
.
Ejemplos prácticos
Repositorio oficial de Debian
Types: deb deb-src
URIs: http://deb.debian.org/debian
Suites: bookworm
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Repositorio con múltiples URIs
Types: deb
URIs: https://mirror.eu.debian.org/debian https://deb.debian.org/debian
Suites: bookworm-updates
Components: main
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Repositorio externo (Google Chrome)
Types: deb
URIs: http://dl.google.com/linux/chrome/deb/
Suites: stable
Components: main
Architectures: amd64
Signed-By: /usr/share/keyrings/google-linux-signing-key.gpg
Ventajas del nuevo formato .sources
- Mayor legibilidad: Cada campo se define explícitamente, evitando errores de sintaxis.
- Soporte nativo para Signed-By: Mejora la seguridad al usar claves almacenadas en
/usr/share/keyrings
. - Compatibilidad con múltiples URIs: Permite definir varios mirrors en un mismo bloque.
- Mantenimiento simplificado: Más fácil de automatizar y convertir desde scripts.
Conversión de .list a .sources (opcional)
Si todavía usas ficheros .list
, puedes convertirlos fácilmente al nuevo formato. A continuación, un ejemplo de script bash que transforma un archivo de sources.list
clásico en un archivo .sources
moderno:
#!/bin/bash
# convertir-list-a-sources.sh
# Convierte un archivo .list de APT en un archivo .sources compatible
LIST_FILE="/etc/apt/sources.list"
OUT_FILE="/etc/apt/sources.list.d/custom.sources"
KEYRING="/usr/share/keyrings/debian-archive-keyring.gpg"
ARCH="amd64"
echo "Types: deb" > "$OUT_FILE"
echo -n "URIs:" >> "$OUT_FILE"
grep -E "^deb " "$LIST_FILE" | awk '{print " " $2}' >> "$OUT_FILE"
echo "Suites: $(lsb_release -cs)" >> "$OUT_FILE"
echo "Components: main contrib non-free" >> "$OUT_FILE"
echo "Architectures: $ARCH" >> "$OUT_FILE"
echo "Signed-By: $KEYRING" >> "$OUT_FILE"
echo "Archivo convertido a formato .sources: $OUT_FILE"
Conclusión
El formato .sources
es la evolución natural del sistema de repositorios de APT en Debian y Ubuntu. Ofrece mayor seguridad, legibilidad y flexibilidad, facilitando la gestión automatizada y el mantenimiento de sistemas. Si aún usas los antiguos ficheros .list
, este es el momento ideal para migrar.