Saltar la navegación

sources.list

Como se ha dicho, el fichero de texto /etc/apt/sources.list le sirve a APT para saber qué orígenes o repositorios Debian tiene que utilizar para encontrar los paquetes (binarios o fuentes). Para ello se descargan en el disco local los listados de paquetes de cada uno de los repositorios indicados. Si el repositorio es de paquetes binarios, entonces se descarga el fichero Packages.gz de la arquitectura hardware sobre la que está corriendo el sistema operativo Debian (es posible trabajar con multiarquitectura). Pero si el repositorio es de paquetes fuentes, entonces se descarga el fichero Sources.gz. Cuando estos ficheros son grandes, es posible que en vez de descargarlos completos, solo se descargue un fichero con las diferencias con respecto al fichero que ya tenemos en el disco local, pero esto no lo trataremos aquí.

El lugar donde APT almacena las bases de datos de los repositorios es en el directorio /var/lib/apt/lists, y como sus nombres se repetirían si hubiese más de un repositorio, se guardan con un nombre que sigue el siguiente formato:

          SitioBaseRepositorio_dists_Rama_Sección_{binary | source}-arquitectura_{Packages | Sources}

También se guardan los ficheros Release y Release.pgp.

          SitioBaseRepositorio_dists_Rama_{Release | Release.pgp}

$ ls /var/lib/apt/lists
ftp.us.debian.org_debian_dists_jessie_contrib_binary-amd64_Packages
ftp.us.debian.org_debian_dists_jessie_contrib_source_Sources
ftp.us.debian.org_debian_dists_jessie_main_binary-amd64_Packages
ftp.us.debian.org_debian_dists_jessie_main_source_Sources
ftp.us.debian.org_debian_dists_jessie_non-free_binary-amd64_Packages
ftp.us.debian.org_debian_dists_jessie_non-free_source_Sources
ftp.us.debian.org_debian_dists_jessie_Release
ftp.us.debian.org_debian_dists_jessie_Release.gpg

Como se ve, las bases de datos de paquetes se almacenan sin comprimir en el disco duro local, han perdido la extensión que tuvieran: .gz ó .xz ó .bz2.

Cada línea del archivo sources.list contiene la descripción de un repositorio, compuesta por varias partes separadas por espacios:

            {deb | deb-src}   DirectorioBase   Rama   [Sección-1]   [Sección-2]   ...

El primer campo indica el tipo de origen, si el repositorio es de paquetes binarios se especificará deb y si es de paquetes fuentes, entonces deb-src.

El segundo campo indica el directorio base del espacio de almacenamiento donde están los repositorios, y combinado con los nombres de ficheros presentes en Packages.gz o Sources.gz debe generar una ruta completa y válida de los paquetes. Este directorio base puede comenzar de distintas formas en función de tipo de espacio de almacenamiento (disco local, servidor web, servidor ftp, etc.):

  • file://... Indicaría un origen local instalado en un directorio de la jerarquía de archivos del sistema.
  • http://... Indicaría un origen disponible en un servidor web. Es lo más habitual y nos centraremos en él.
  • ftp://... Indicaría un origen disponible en un servidor FTP,
  • cdrom:... Indicaría un origen en CD-ROM/DVD-ROM/Blu-ray. Se usa muy poco, y es necesario hacer uso del comando apt-cdrom.

El tercer campo sirve para indicar la rama de desarrollo Debian que queremos utilizar, por ejemplo, la rama estable (para producción) de Debian es Stretch actualmente.

El cuarto campo y siguientes indican la sección o secciones de la rama elegida, que como hemos visto, pueden ser: main, contrib o non-free.

Por ejemplo, podríamos escribir en sources.list los dos siguientes repositorios, el primero sería binario y el segundo de fuentes:

# Repositorios

deb http://ftp.debian.org/debian stretch main contrib non-free
deb-src http://ftp.debian.org/debian stretch main contrib non-free

Con la información de estos repositorios, es posible acceder a los ficheros necesarios para descargar paquetes. Suponiendo una arquitectura amd64, estos ficheros son:

Observa que las líneas que comienzan por # son comentarios.

En vez de escribir la rama stretch, al ser esta la actual distribución estable, también podríamos haber escrito stable, pero esto tiene el inconveniente de que en un determinado momento, este directorio apuntará a buster, que es la actual distribución en pruebas (testing) y llegará a convertirse en estable. Esta situación podría dejar el sistema inestable.

Cuando vamos a usar muchos repositorios, en vez de escribirlos todos en /etc/apt/sources.list, podemos hacer uso del directorio /etc/apt/sources.list.d, donde podemos organizar los repositorios escribiéndolos en varios ficheros con extensión .list. APT ordena alfabéticamente estos ficheros y los incluye al final de sources.list.

Un fichero sources.list estándar para la rama estable (stretch) de Debian es el siguiente:

# Repositorio base
deb http://ftp.debian.org/debian stretch main contrib non-free
deb-src http://ftp.debian.org/debian stretch main contrib non-free

# Actualizaciones de stretch
deb http://ftp.debian.org/debian stretch-updates main contrib non-free
deb-src http://ftp.debian.org/debian stretch-updates main contrib non-free

# Actualizaciones de seguridad
deb http://security.debian.org/ stretch/updates main contrib non-free
deb-src http://security.debian.org/ stretch/updates main contrib non-free

En los dos primeros bloques se ha utilizado como directorio base http://ftp.debian.org/debian, pero podrían utilizarse cualquiera de los espejos que existen, podemos ver un listado aquí.

Sepa que cuando la versión deseada de un paquete se encuentra disponible en varios reposi-
torios, se utilizará el que se encuentre primero en el archivo sources.list . Por esta razón,
generalmente se agregan orígenes no oficiales al final del archivo.

La mayoría de los paquetes que se instalarán provendrán de los dos primeros repositorios, los titulados como "Repositorio base", pues contiene todos los paquetes de la distribución Debian. Estos repositorios se actualizan muy poco, alrededor de una vez cada 2 meses, creando las versiones menores, actualmente stretch es la versión 9.0, y tras la primera versión menor, pasará a ser la 9.1, y así sucesivamente.

El resto de repositorios que se ha puesto no son repositorios completos, sino parciales, van a almacenar algunas actualizaciones de algunos paquetes para que APT las instale.

El segundo grupo de repositorios "Actualizaciones de stretch" contendrán actualizaciones que no implican riesgos de seguridad pero son consideradas suficientemente importantes como para ser enviadas a los usuarios antes de la publicación de la siguiente versión menor de stretch. Cuando llega la nueva versión menor se vaciarán e irán acumulando nuevas actualizaciones hasta la próxima versión menor.

Estos repositorios lo tienen todas las ramas de Debian excepto unstable y experimental. Como se encuentran en el mismo servidor que la distribución Debian (ftp.debian.org), el árbol de directorios está así:

raíz
├── dists
│   ├── experimental
│   ├── sid
│   ├── unstable
│   ├── buster
│   ├── buster-updates
│   ├── testing
│   ├── testing-updates
│   ├── stretch
│   ├── stretch-updates
│   ├── stable
│   ├── stable-updates
│   ├── jessie
│   ├── jessie-updates
│   ├── oldstable
│   ├── oldstable-updates
│   ├── wheezy
│   ├── wheezy-udates
│   ├── oldoldstable
│   └── oldoldstable-updates
└── pool

El último grupo de repositorios "Actualizaciones de seguridad" es muy importante, pues contienen los parches para los agujeros de seguridad que se van encontrando en los programas a lo largo del tiempo. Estos repositorios no están, como puede verse, en el mismo servidor que la distribución Debian, concretamente están en security.debian.org, el cual no tiene espejos. Solo están disponibles para las ramas estables: stable, oldstable y oldoldstable.

En los servidores Debian, también existen otros repositorios, exclusivos de las ramas estables y que puede que nos interesen, sobre todo si somos sensibles a la versionitis. Las lineas a incluir en sources.list serían:

# Retroadaptaciones para stretch
deb http://ftp.debian.org/debian stretch-backports main contrib non-free
deb-src http://ftp.debian.org/debian stretch-backports main contrib non-free

El objetivo de estos repositorios es el siguiente: cuando la distribución entra en años, muchos proyectos de software habrán publicado nuevas versiones que no están integradas en la rama actual de estable (que solo es modificada para corregir los problemas más críticos, como los problemas de seguridad) y a veces, los encargados de paquetes nos ofrecen esas nuevas versiones a través de estos repositorios. En mi caso por ejemplo, tengo instalado el paquete ofimático LibreOffice en su versión 4.3.3, pero en el repositorio backports se encuentra la versión 5.2.7, si yo sufriera de versionitis, ya lo habría instalado.

Hay que tener en cuenta, y lo veremos posteriormente, que para instalar un paquete de estos repositorios hay que indicarlo expresamente.

raíz
├── dists
│   ├── experimental
│   ├── sid
│   ├── unstable
│   ├── buster
│   ├── buster-updates
│   ├── testing
│   ├── testing-updates
│   ├── stretch
│   ├── stretch-updates
│   ├── stretch-backports
│   ├── stable
│   ├── stable-updates
│   ├── stable-backports
│   ├── jessie
│   ├── jessie-updates
│   ├── jessie-backports
│   ├── oldstable
│   ├── oldstable-updates
│   ├── oldstable-backports
│   ├── wheezy
│   ├── wheezy-udates
│   ├── wheezy-backports
│   ├── oldoldstable
│   ├── oldoldstable-updates
│   └── oldoldstable-backports
└── pool

Los paquetes que están en el repositorio backports formarán parte de la siguiente versión estable de Debian.

Existen muchos repositorios Debian no oficiales donde encontrar programas libres y privativos. Uno de los más famosos es deb-multimedia, que incluye muchos paquetes no libres multimedia, como códecs de audio no oficiales, aplicaciones de vídeo, etc. Para usarlo habría que incluir en sources.list las siguientes líneas:

deb http://www.deb-multimedia.org/ stretch main non-free
deb-src http://www.deb-multimedia.org/ stretch main non-free

Y como vemos, en este repositorio no existe la sección contrib.

Es importante recordar que instalar programas es una operación delicada desde el punto de vista de la seguridad, por lo que debemos tener cuidado y solo utilizar repositorios que sean fiables, no vayamos a instalar un programa con algún troyano en su interior.

Podemos encontrar un listado de repositorios Debian oficiales y no oficiales aquí.

Licencia: licencia de software libre GPL