En la informática existen varias definiciones para el término repositorio, entre esas está la que compete a las distribuciones GNU/Linux, término el cual se refiere a aquel servidor donde se encuentran los paquetes actualizados (normalmente) para ser descargados e instalados en nuestro computador. Realmente como se dijo en un artículo anterior, muchas distribuciones trabajan con repositorios; pero siendo las basadas en Debian las más populares a nivel mundial, nos ocuparemos de como funcionan sus repositorios en este artículo.

Como hablábamos en ocasiones anteriores, las distribuciones basadas en Debian usan un tipo de paquete conocido como .deb, estos paquetes simplemente se pueden descargar de cualquier página e instalarse sin problema, ya que el comando dpkg o aplicativos gráficos como GDebi se encargan de resolver las dependencias, es decir de buscar aquellas librerías que se necesitan para el correcto funcionamiento del paquete que se va a instalar.

Pero la cuestión está en una de las diferencias que existe entre GNU/Linux y los sistemas privativos, y esta es la forma de obtener el software. Aunque en los sistemas privativos han aparecido las famosas "tiendas" para obtener aplicaciones, anteriormente se debía obtener el software de los sitios de los fabricantes del software que necesitamos. En el caso de GNU/Linux, normalmente el software está centralizado en repositorios (no solo existe uno, existen distintos repositorios) y gracias a esta organización podemos obtener lo que buscamos y garantizar que lo instalado funcionará en nuestra distribución en particular.

Para crear una infraestructura para la interacción con los repositorios y facilitar la instalación de los paquetes, las personas del proyecto Debian también crearon lo que conocemos como Advanced Packaging Tool (Herramienta de empaquetado avanzado) o mejor conocido como APT, que por cierto no solo funciona en las distros basadas en Debian sino que también se ha portado a otras distros e incluso a Mac OS.

Los repositorios normalmente se configuran en la instalación de la distribución, pero también pueden ser añadidos o editados luego de tener el sistema funcionando. Los repositorios de los cuales se obtendrá el software se encuentran nombrados en un archivo llamado sources.list el cual se ubica en la carpeta /etc/apt/. Si deseamos agregar un repositorio tenemos varias formas de hacerlo: Una es desde la interfaz gráfica de Synaptic, otra es usando el comando add-apt-repository desde consola, o la tercera es editando el archivo sources.list desde nuestro editor favorito.

Luego de agregar un repositorio se debe actualizar la lista de paquetes, lo cual se puede hacer con el comando apt-get update o con el comando aptitude update. Esto traerá a nuestro equipo los listados de paquetes que están disponibles en el servidor, ya sea para que instalemos o para que actualicemos los paquetes que ya tenemos instalados.

Para instalar un nuevo paquete nos podemos valer de Synaptic, o de aptitude y su interfaz de texto; aptitude permite elegir el paquete entre un amplio listado de paquetes; claro que si conocemos el nombre del paquete basta con decir apt-get install y el nombre del paquete o aptitude install y el nombre del paquete y el proceso explicará que paquete (o paquetes si son necesarias algunas dependencias) instalará, y claro pedirá una autorización para utilizar el espacio de la caché local de paquetes. A continuación, dejará una copia del paquete en /var/cache/apt/archives/ y desempaquetará el .deb instalando y colocando todo según el archivo de instrucciones que está dentro de el.

Para hablar de las actualizaciones primero debemos hablar de los repositorios como tal, para poder entender como funcionan las actualizaciones. Como se dijo anteriormente, los repositorios se configuran al momento de la instalación pero también se pueden modificar en cualquier momento, ahí está el secreto para establecer como se realizará la actualización de paquetes o de dónde tomará los paquetes para ser instalados. Una típica línea de sources.list se compone de la siguiente manera:

deb http://ftp.fr.debian.org/debian/ wheezy main

La primera palabra dice que queremos traer de los repositorios ya sean paquetes binarios (deb) o código fuente (deb-src), recordemos que como estamos hablando de FOSS es posible obtener el código.  Luego del primer espacio se indica la dirección Web donde se ubica el repositorio puede ser http o ftp. Después del espacio a continuación de la dirección Web, se indica que versión de los paquetes queremos, puede ser stable, testing, unstable; para este momento la versión estable de Debian es wheezy nombre que podemos colocar en vez de la palabra stable, y en este momento podemos colocar jessie en vez de testing y siempre podremos colocar sid en vez de unstable ya que sid siempre será la versión inestable de Debian; este funcionamiento es común a todas las distros basadas en Debian siempre y cuando se haya mantenido el estándar definido originalmente.

Para finalizar vienen los tipos de paquetes según su licenciamiento; cuando Debian es instalado por primera vez solo se coloca main, y esperamos que salvo necesidades extremas uno no deba colocar contrib, que son paquetes que tienen algún componente no libre, y por último non-free que como su nombre en inglés lo dice son paquetes que no son libres.

Para realizar la actualización de paquetes, siempre se debe realizar primero un aptitude update, aunque no se haya cambiado nada en el archivo sources.list; luego se debe realizar un aptitude safe-upgrade que realizará la actualización de los paquetes conservando la integridad del sistema. Si se tiene un sistema unstable, se puede realizar un aptitude upgrade o aptitude full-upgrade para que se obtengan los últimos paquetes, y como es un sistema inestable no hay problema con la integridad del sistema. Esto mismo es posible realizarlo a través de interfaces gráficas como Synaptic, y en las últimas versiones de Debian, el sistema indica cuando hay nuevas actualizaciones.

De otro lado, cuando se llega una nueva versión de la distro se puede simplemente cambiar la parte correspondiente a esta (por ejemplo de wheezy a jessie) y luego hacer un aptitude dist-upgrade para actualizar a la nueva versión.

Imagen tomada de http://doctormo.deviantart.com/art/New-Debian-Packaging-Cover-171106111