Si en Debian juegas con las versiones …

debian-logo… puedes encontrarte con actualizaciones a lo bestia. Afortunadamente la gente del proyecto hace las cosas muy bien y situaciones como la de hoy tienen arreglo. Y arreglo fácil y entendible, ojo.

Estaba intentando instalar el programa etherpad para realizar pruebas de edición colaborativa de un documento a través del navegador, y me he encontrado con que necesitaba también el paquete node.js que sólo aparecía en la rama backports de los repositorios.

Bueno, me he dicho, si retoco la puntuación de paquetes debería ser capaz de instalar únicamente ése y no forzar demasiado el resto. Soy partidiario de tener el sistema en una única versión y sólo mezclar otras ramas cuando sea un camino más sencillo que instalar el programa directamente en /opt. Hasta ahí bien, no he tenido ningún problema en tener disponibles tanto nodejs como nodejs-legacynpm (el gestor de paquetes para node.js), en cambio, sí que ha supuesto un problema. Aparece sólo y perdido en la rama sid y añadir ésta a las fuentes siempre me ha incomodado. Pero, nada, también he ajustado las puntuaciones, he añadido la rama y lo he podido instalar sin apuros.

¿ Cuál ha sido entonces la situación ? Pues que echando un vistazo al resto de los paquetes me he dado cuenta de que la mayor parte de la base del sistema no estaba en la rama estable. Sin saber muy bien cómo, ni ganas de echarle un vistazo al registro de cambios del repositorio de configuración, he conseguido tener versiones instaladas procedentes de antiguas incursiones en otras ramas y estaban a medio camino de la versión estable y la de testeo. Me he puesto a buscar en la red una forma sencilla de hacer un cambio global de versión (downgrade en la jerga) y he visto un enlace antiguo donde lo explicaban muy bien.

Consiste cambiar temporalmente las puntuaciones para que contengan algo como lo siguiente:

Package: *
Pin: release a=stable
Pin-Priority: 1001

Package: *
Pin: release a=testing
Pin-Priority: 60

Package: *
Pin: release a=unstable
Pin-Priority: 50

y que viene a decir que la rama estable tiene la mayor prioridad en la instalación (prácticamente obligada), y efectuar después las siguientes operaciones:

# apt-get update
# apt-get -s upgrade
# apt-get upgrade

Es decir, se actualiza la lista de paquetes (lo que asigna ya las puntuaciones a las diferentes versiones), se comprueba qué es lo que el sistema va a hacer empleando el parámetro -s y, una vez convencido de que no va a destruirlo todo, realizar la actualización real.

Conviene y mucho recuperar la versión antigua de las puntuaciones o tendremos un sistema más bien confundido y difícil de mantener.