En anteriores artículos de yum (véase por ejemplo 6 trucos útiles del gestor de paquetes yum) hemos visto como este gestor de paquetes nos facilita de manera asombrosa la instalación, actualización y manteniemiento de paquetes en sistemas Red Hat, CentOS, etc. Algunos trucos requieren de la instalación de plugins y otros están disponible por defecto. Hoy vamos a hablar de la característica history disponible sin plugins.
El comando yum history nos permite visualizar un listado con todas las transacciones realizadas a través de yum y a su vez, visualizar el detalle de cada una e incluso hacer un rollback de dicha instalación o actualización.
Lo primer que debemos ejecutar para verlo es directamente yum history:
# yum history Loaded plugins: fastestmirror, presto ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 15 | root | 2012-11-17 11:27 | Install | 1 14 | root | 2012-11-17 11:25 | Install | 2 13 | root | 2012-11-17 10:01 | Install | 3 < 12 | root | 2012-11-10 12:00 | Install | 18 > 11 | root | 2012-08-29 20:44 | Install | 2 10 | root | 2012-08-06 21:11 | Install | 1 9 | root | 2012-08-06 20:47 | Install | 6 8 | root | 2012-08-06 19:17 | Install | 1 7 | root | 2012-08-06 19:08 | Install | 1 6 | root | 2012-08-06 19:03 | Install | 1 5 | root | 2012-08-06 19:02 | I, U | 9 4 | root | 2012-08-06 18:57 | I, U | 12 3 | root | 2012-08-06 18:49 | Install | 1 2 | root | 2012-08-06 18:49 | Install | 1 1 | System | 2012-08-06 18:20 | Install | 212
Como podéis observar, se han realizado 15 transacciones en este sistema, todas por el usuario root a excepción de la número 1, realizada por el sistema ya que es la propia instalación del sistema operativo. Podemos ver también la fecha en la que se realizó, la acción (Install, Update, Erase…) y el número de paquetes involucrados en la transacción.
Si queremos ver el detalle de una de ellas ejecutamos el comando yum history info seguido del ID de transacción:
# yum history info 14 Loaded plugins: fastestmirror, presto Transaction ID : 14 Begin time : Sat Nov 17 11:25:40 2012 Begin rpmdb : 267:fc61d14694f91e737d8e7f33fa67e85b45148978 End time : 11:25:44 2012 (4 seconds) End rpmdb : 269:6c2a672fdb8f8966f43fc762c679fb88ab7e21d6 User : root Return-Code : Success Command Line : install crypto-utils Transaction performed with: Installed rpm-4.8.0-27.el6.i686 @anaconda-CentOS-201207051201.i386/6.3 Installed yum-3.2.29-30.el6.centos.noarch @anaconda-CentOS-201207051201.i386/6.3 Installed yum-plugin-fastestmirror-1.1.30-14.el6.noarch @anaconda-CentOS-201207051201.i386/6.3 Installed yum-presto-0.6.2-1.el6.noarch @anaconda-CentOS-201207051201.i386/6.3 Packages Altered: Install crypto-utils-2.4.1-24.2.el6.i686 @base Dep-Install perl-Newt-1.08-26.el6.i686 @base history info
Ahí tenemos toda la información de la transacción. Si quisieramos revertir el proceso de todo lo que se realizó en la transacción 14 ejecutamos el comando yum history undo seguido del ID:
# yum history undo 14 Loaded plugins: fastestmirror, presto Loading mirror speeds from cached hostfile ... ... Undoing transaction 14, from Sat Nov 17 11:25:40 2012 Install crypto-utils-2.4.1-24.2.el6.i686 @base Dep-Install perl-Newt-1.08-26.el6.i686 @base Resolving Dependencies --> Running transaction check ---> Package crypto-utils.i686 0:2.4.1-24.2.el6 will be erased ---> Package perl-Newt.i686 0:1.08-26.el6 will be erased --> Finished Dependency Resolution Dependencies Resolved ============================================================================= Package Arch Version Repository Size ============================================================================= Removing: crypto-utils i686 2.4.1-24.2.el6 @base 169 k perl-Newt i686 1.08-26.el6 @base 205 k Transaction Summary ============================================================================== Remove 2 Package(s) Installed size: 373 k Is this ok [y/N]:
Una vez finalizado el rollback, esta nueva transacción aparecería en el histórico de yum con el ID 16 y action ERASE:
# yum history Loaded plugins: fastestmirror, presto ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 16 | root | 2012-11-17 16:25 | Erase | 2 15 | root | 2012-11-17 11:27 | Install | 1 14 | root | 2012-11-17 11:25 | Install | 2 13 | root | 2012-11-17 10:01 | Install | 3 < 12 | root | 2012-11-10 12:00 | Install | 18 > 11 | root | 2012-08-29 20:44 | Install | 2 10 | root | 2012-08-06 21:11 | Install | 1 9 | root | 2012-08-06 20:47 | Install | 6 8 | root | 2012-08-06 19:17 | Install | 1 7 | root | 2012-08-06 19:08 | Install | 1 6 | root | 2012-08-06 19:03 | Install | 1 5 | root | 2012-08-06 19:02 | I, U | 9 4 | root | 2012-08-06 18:57 | I, U | 12 3 | root | 2012-08-06 18:49 | Install | 1 2 | root | 2012-08-06 18:49 | Install | 1 1 | System | 2012-08-06 18:20 | Install | 212 history list
Pero esto no es todo, ya que si lo que quiero es rehacer una transacción, también puedo hacerlo con el comando yum history redo seguido del ID. En este caso, he borrado lo que se hizo en la transacción 14, generando la del ID 16. Podría hacer un rollback de la 16 para rehacerlo o un redo de la 14:
# yum history redo 14 Loaded plugins: fastestmirror, presto Loading mirror speeds from cached hostfile * base: ftp.udc.es * extras: ftp.udc.es * updates: ftp.udc.es Repeating transaction 14, from Sat Nov 17 11:25:40 2012 Install crypto-utils-2.4.1-24.2.el6.i686 @base Dep-Install perl-Newt-1.08-26.el6.i686 @base Resolving Dependencies --> Running transaction check ---> Package crypto-utils.i686 0:2.4.1-24.2.el6 will be installed --> Processing Dependency: perl(Newt) for package: crypto-utils-2.4.1-24.2.el6.i686 --> Running transaction check ---> Package perl-Newt.i686 0:1.08-26.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ============================================================================== Package Arch Version Repository Size ============================================================================== Installing: crypto-utils i686 2.4.1-24.2.el6 base 75 k Installing for dependencies: perl-Newt i686 1.08-26.el6 base 72 k Transaction Summary =============================================================================== Install 2 Package(s) Total download size: 147 k Installed size: 373 k Is this ok [y/N]:
Como podéis ver, yum nos ofrece una potente herramienta para llevar un control exhaustivo de las tareas de instalación, actualización y borrado de paquetes que se realizan en un sistema, desde la fecha, el usuario hasta el número de paquetes involucrados en la transacción.