Yum rollback, undo o deshacer

20 Noviembre 2012 at 16:54 by Adrián Pérez

Yum rollbackEn muchas ocasiones, hemos de actualizar o instalar nuevos paquetes en servidores críticos, que difícilmente podemos asegurar que no afectarán a nuestros servicios. Es posible que la nueva versión de PHP tenga alguna incompatibilidad con el código que usa la versión añeja que tiene el servidor, o que una nueva versión de openssh venga con un 0day.

¿Cómo podemos deshacer lo que acabamos de estropear con yum?

Afortunadamente, las últimas versiones de yum, vienen con una nueva funcionalidad que permite ver el histórico de ejecuciones, y lo más importante, volver atrás. Aquí lo explican en la documentación oficial.

Para verificar que nuestra versión de yum tiene la nueva funcionalidad de histórico, podemos ejecutar:

yum history

Ejemplo de salida:

ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
7 | <adri> | 2012-11-08 15:49 | I, U | 11
6 | <adri> | 2012-11-08 15:48 | Install | 1
5 | root <root> | 2012-11-08 15:47 | Install | 1
4 | root <root> | 2012-10-25 14:04 | Install | 2

El anterior comando nos devolverá un listado de las últimas ejecuciones de uso, mostrando usaurio, fecha, acciones (instalación, update, remove, etc.) y paquetes alterados, además de un ID para cada una de las ejecuciones. Podremos entrar en el detalle de cada ejecución con

yum history info 6

donde 6 será el ID de la ejecución de yum que queremos ver en detalle (en este caso la que tiene ID=6).

¿Y ahora? ¿Undo? ¿Redo? En la documentación oficial también lo explican [enlace].

La idea es que gracias a yum history, podemos deshacer o rehacer las transacciones que se aplicaron en una ejecución anterior de yum. Por ejemplo, si la última ejecución de yum (ID=7 en el ejemplo) nos ha instalado unos paquetes que nos afectan negativamente al funcionamiento de nuestro servidor, podemos deshacer los cambios con:

yum history undo 7

Útil, útil, útil.

Actualización: La opción "undo" deshará esa transacción. Si por ejemplo la última transacción es la 14, y queremos volver a como estábamos tras la transaccion 8 (es decir, dejar el sistema como estaba justo tras ejecutar el yum que se ejecutó en la transacción 8) usaremos "rollback":

yum history rollback 8

Fuentes:

http://docs.fedoraproject.org/es-ES/Fedora/14/html/Software_Management_Guide/ch05s16s02.html
http://www.forlinux.co.uk/expertise/blog/2012/07/02/yum-undo-updates/
Flickr! Foto por s5670