Buscar en este blog

1.10.06

Establecer prioridades entre repositorios para "apt"

Normalmente no se suelen mezclar los paquetes de las distintas ramas de Debian (Stable, Unstable, Testing, Experimental). Pero hay ocasiones en que pese a que estemos en una rama relativamente actualizada como "Testing" (a día de hoy ETCH) es posible que querramos un paquete o un programa (o metapaquete) que aún no haya llegado a esa rama.

Lo más sencillo es editar el archivo "/etc/apt/sources.list" y añadir un repositorio de la rama donde esté. Supongamos que hoy nos apetece probar un estupendo programa de almacenamiento de passwords llamado "Revelation". Si estamos en la rama "Testing" ahora mismo en esta no existe el paquete. Sin embargo sí que está en "Unstable". Añadimos el repositorio. Por ejemplo:


[...]
deb http://ftp.es.debian.org/debian/ stable main non-free contrib
deb http://ftp.es.debian.org/debian/ unstable main non-free contrib
[...]




Ahora hacemos un "apt-get update" y ya podremos instalar facilmente nuestro querido programa con un "apt-get install revelation".

Esto funciona pero no es correcto. Porque si ahora quisieramos actualizar algún paquete suelto de nuestra distribución "Testing" ) o entera con un "apt-get upgrade"), apt actualizaría todo nuestro sistema a "Unstable" ya que sus paquetes serán más nuevos que los de Testing. Y ya está el lio. Seguramente nos quede el sistema bastante revuelto.

Para evitar estos problemas podemos establecer lo que se conoce como Prioridades entre Ramas; estamos en "testing" y queremos que "apt" instale o actualice siempre con paquetes de "testing" y solamente en caso de que no existan en esa rama o que se lo indiquemos expresamente, que los busque en la siguiente rama en prioridad (Unstable).
Conseguir esto es tan sencillo como crear el archivo "/etc/apt/preferences":

Package: *
Pin: release testing
Pin-Priority: 900

Package: *
Pin: release unstable
Pin-Priority: 600



Con esto los paquetes de "Testing" tendrán prioridad sobre los de "Unstable" (hacer "apt-get update").
Si queremos instalar un paquete que está en ambas ramas pero nos interesa la de "Unstable" hemos de indicar expresamente que lo queremos así con:

apt-get install -t unstable paquete