(Trabajo en progreso)
Quienes utilizan Debian GNU/Linux regularmente, seguramente habrán notado que aunque este sistema operativo tiene gran estabilidad, sus paquetes pueden quedar obsoletos con respecto a las últimas versiones estables que van lanzando sus desarrolladores.
Afortunadamente, existe una alternativa para aquellos que tengan un espíritu no tan conservador, conocida como apt-pinning. Este método permite utilizar un sistema operativo fundamentalmente estable, pero con versiones más recientes de aquellos paquetes que interesan.
Nota: Antes de utilizar pinning, siempre es recomendable verificar si el paquete deseado ha sido agregado ya al repositorio backports, ya que tomarlo de este origen ocasiona menos conflictos en el sistema. Al utilizar apt-pinning, el responsable de garantizar la compatibilidad de los paquetes es el usuario, por lo que Debian no alienta el uso de apt-pinning sin una cuidadosa consideración.
En su nivel más básico, apt-pinning utiliza dos archivos: /etc/apt/sources.list
y /etc/apt/preferences
. Además es importante el uso del parámetro target
, que se combina con la rama que se pretende utilizar.
El primer paso consiste en configurar el archivo /etc/apt/sources.list
para que incluya las ramas deseadas. Un ejemplo simple sería este:
#Stable deb http://ftp.us.debian.org/debian stable main non-free contrib deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free #Testing deb http://ftp.us.debian.org/debian testing main non-free contrib deb http://non-us.debian.org/debian-non-US testing/non-US main contrib non-free #Unstable deb http://ftp.us.debian.org/debian unstable main non-free contrib deb http://non-us.debian.org/debian-non-US unstable/non-US main contrib non-free
Evidentemente, este ejemplo puede ampliarse agregando las entradas deb-src
u otros repositorios como security.debian.org
.
El próximo paso consiste en crear (o modificar) el archivo /etc/apt/preferences
. Es allí donde verdaderamente ocurre el pinning.
Este archivo tiene diferentes maneras de configurarse que no son del todo consistentes entre sí y de las cuales depende la manera en que el sistema interpreta los parámetros, por lo que probablemente sea recomendable utilizar un ejemplo como el siguiente:
Package: * Pin: release o=Debian,a=stable Pin-Priority: 800 Package: * Pin: release o=Debian,a=testing Pin-Priority: 500 Package: * Pin: release o=Debian,a=unstable Pin-Priority: 300 Package: * Pin: release o=Debian Pin-Priority: -10
El parámetro Package
define el paquete para el cual se desea utilizar pinning. En este caso, al colocar un asterisco se admitirán todos los paquetes, pero también podría colocarse el nombre de algún paquete en particular.1)
El parámetro Pin
especifica la rama a utilizar, o la versión del paquete si se especificó un nombre. En este caso se han configurado tres ramas, pero podrían utilizarse solo dos.2)
El parámetro Pin-Priority
establece la prioridad de los diferentes Pin, observe que este ejemplo tiene un valor mayor en el Pin stable
, por lo que se priorizará sobre testing
y unstable
. la última entrada tiene un valor negativo, lo cual implica que no se instalará nunca un paquete de otra rama, como por ejemplo experimental
.
Para conocer las prioridades de cada origen, puede utilizarse el comando apt-cache policy
. Si lo que se desea es conocer las prioridades de uno o varios paquetes, puede ejecutarse lo siguiente:
apt-cache policy nombrepaquete1 [nombrepaquete2] [...]
Una vez configurados los archivos necesarios, es preciso actualizar los listados de paquetes disponibles:
apt-get update
Hay dos maneras de utilizar apt-pinning: