El otro día, hablando con un compañero me preguntó si sabía cómo hacer para retener un paquete en una versión exacta en RedHat/CentOS, yum. En aquel momento no lo sabía y como no me hacía falta, pues la verdad es que tampoco vi necesario aprender cómo hacerlo. Ahora que sí me hizo falta, pues hubo que buscar cómo poder hacerlo. yum, tiene un plugin, llamado versionlock que hace exactamente esa funcionalidad, retener un paquete en una versión específica e impedir que se actualice.
Como el resto de plugins, lo primero es instalarlo en el sistema en caso de que no esté.
Como el resto de plugins, lo primero es instalarlo en el sistema en caso de que no esté.
shell> yum install yum-versionlock
Una vez esté presente en el sistema sólo habrá que indicar qué paquete, con nombre o comodín (*) se desea retener. En este caso, interesa retener el paquete puppet, para evitar que se actualice. La versión disponible en CentOS de puppet es más actual que el servidor de Debian (testing), por lo que no funciona muy bien. Así que mejor instalamos un paquete más antiguo e impedimos que se actualice. Para hacerlo, simplemente damos el nombre del paquete.
shell> rpm -qa |grep puppet puppet-2.7.9-2.el6.noarch shell> yum versionlock puppet Loaded plugins: fastestmirror, versionlock Adding versionlock on: 0:puppet-2.7.9-2.el6 versionlock added: 1
Como se puede observar, muy simple de usar y efectivo. Si ya nos interesa profundizar un poco más en cómo funciona, podemos ir a la carpeta en la que yum almacena los archivos de configuración de los plugins instalados, y ahí vemos que ya hay datos relativos a versionlock.
shell> cd /etc/yum/pluginconf.d shell> cat versionlock.conf [main] enabled = 1 locklist = /etc/yum/pluginconf.d/versionlock.list
Si listamos los paquetes que están retenidos vemos que está el que acabamos de introducir.
shell> cat /etc/yum/pluginconf.d/versionlock.list # Added locks on Wed Feb 29 16:40:46 2012 0:puppet-2.7.9-2.el6.*