lunes, 13 de junio de 2011

Gestión de paquetes bloqueados (hold) en Debian/Ubuntu desde Consola

Lista de comandos útiles de consola/terminal, referentes a bloquear/proteger una determinada versión de paquete instalada (como muy bien explica aquí):
  • Bloquear paquete:
    echo 'NOMBRE_PAQUETE hold' | sudo dpkg --set-selections
  • Desbloquear paquete:
    echo 'NOMBRE_PAQUETE install' | sudo dpkg --set-selections
  • Para ver su estado:
    dpkg --get-selections | grep NOMBRE_PAQUETE
  • Listar paquetes bloqueados:
    dpkg --get-selections | grep 'hold'
El siguiente ejemplo tiene que ver con la instalación y uso del DNIe en distribuciones Debian (incluyendo Ubuntu), en las que tenemos que evitar que 2 paquetes se actualicen a sus últimas versiones: opensc y libopensc2 (explicado aquí).

Para bloquearlos desde un terminal (una vez instalados los paquetes), ejecutamos:
echo 'opensc hold' | sudo dpkg --set-selections
echo 'libopensc2 hold' | sudo dpkg --set-selections

Para verificar que todo ha funcionado, comprobamos la salida del siguiente comando:
dpkg --get-selections | grep 'hold'

También podemos comprobarlo ejecutando:
~$ sudo apt-get update && sudo apt-get upgrade
...
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Los siguientes paquetes se han retenido: libopensc2 opensc
0 actualizados, 0 se instalarán, 0 para eliminar y 2 no actualizados.

Para todo esto también puede resultar muy útil wajig.

¿Y porqué hacer todo esto desde consola? Una de las razones es que el gestor de paquetes de Kde para Kubuntu (KPackageKit) no soporta la gestión de esta característica (bloqueo de versiones de paquetes). Es precisamente una de las novedades de la futura versión de Muon (la actual, 1.1.x todavía carece de ello), que por lo visto va a ser el nuevo gestor de paquetes de Kubuntu Oneiric Ocelot 11.10.

No hay comentarios: