Jul172013

Repetir última instalación de paquetes con YUM

 Fedora Linux gnu blog

Hace unos cuatro años que estoy usando como ordenador principal un portátil Acer Aspire 6935G, la verdad es que estoy muy satisfecho con este, pero los años no perdonan nadie y si al tiempo le añades uso intensivo y algunos incidentes menores, es lógico pensar que mi máquina está en los últimos momentos de su vida, que alargaré hasta tener presupuesto para comprar uno nuevo.

El otro día, mientras actualizaba mi Fedora 18 recién instalado, mi portátil decidió fallar en medio de la instalación y me vi obligado a forzar el apagado y cruzar los dedos. Al encenderlo de nuevo, el sistema se recuperó y arrancó, pero parece que la instalación de los paquetes quedó corrupta, lo que afectó a varios ficheros relativos a librerías del sistema que presuntamente se estaban instalando o actualizando cuando mi portátil “estornudó”.

La única forma de garantizar que no quedan ficheros incompletos, es reinstalar los paquetes que se estaban “tocando” cuando el equipo falló. Por lo que necesitaba averiguar cuales eran esos paquetes. Por fortuna, YUM tiene una opción que permite obtener un historial de las últimas acciones.

YUM (Yellowdog Update Modified) es el gestor de paquetes RPM de Fedora, CentOS, Red Hat, OpenSuse, etc. Los comandos YUM history (list, info, summary, repeat, redo, undo, new) fueron añadidos en la versión 3.2.25. Por lo que este truco funcionará en cualquier distribución GNU/Linux que use YUM 3.2.25 o mayor.

La opción history es realmente útil en situaciones que requieran “volver al pasado”, como tras la eliminación o instalación no intencionada de algunos paquetes o, como en mi caso, poder repetir la última acción para asegurar que todo queda bien. Y este fue el resultado de la ejecución del comando:

[root@localhost ~]# yum history
Complementos cargados:fastestmirror, langpacks, presto, refresh-packagekit
ID | Linea de comandos        | Día y hora       | Acción(es) | Modific
-------------------------------------------------------------------------------
26 |                          | 2013-01-19 19:26 | I, U       | 12 **
25 | install ktorrent         | 2013-01-19 19:04 | Install    | 5
24 | install xournal          | 2013-01-19 17:12 | Install    | 1
23 | localinstall google-talk | 2013-01-19 15:55 | Install    | 1 EE
22 | install emesene          | 2013-01-19 15:17 | Install    | 14
21 | install crypt*per        | 2013-01-19 14:35 | Install    | 5
20 | localinstall skype-4.1.0 | 2013-01-19 13:58 | Install    | 43
19 |                          | 2013-01-18 16:11 | Update     | 1
18 | install yumex            | 2013-01-18 16:09 | Install    | 5
17 | install owncloud-client  | 2013-01-17 15:46 | Install    | 6
16 | install vim              | 2013-01-17 13:42 | Install    | 3

Como se puede ver, la última acción fue la que tiene el ID 26 e implica acciones de instalación (I) y actualización (U) de 12 paquetes. Para ver los detalles de dicha transacción ejecuté el siguiente comando:

[root@localhost ~]# yum history info 26
Complementos cargados:fastestmirror, langpacks, presto, refresh-packagekit
ID de transacción : 26
Hora inicial     : Sat Jan 19 19:26:49 2013
Rpmdb inicial    : 1675:17a75d61600c922651f9f3f97fae99324c2f3876
Usuario           : elias
Codigo-obtenido    : ** Abortado **
Transacción realizada con:
    Instalado      rpm-4.10.2-1.fc18.x86_64                @updates
    Instalado      yum-3.4.3-47.fc18.noarch                @fedora
    Instalado      yum-metadata-parser-1.1.4-7.fc18.x86_64 @fedora
    Instalado      yum-presto-0.9.0-1.fc18.noarch          @fedora
    Instalado      yumex-3.0.10-1.fc18.noarch              @fedora
Paquetes modificados:
 ** Actualizado                 apper-0.8.0-0.11.20121126git.fc18.x86_64 @fedora
    Actualizar                        0.8.0-2.fc18.x86_64                @updates
    Actualizado                 firewall-config-0.2.11-2.fc18.noarch     @fedora
    Actualizar                                  0.2.12-1.fc18.noarch     @updates
    Actualizado                 firewalld-0.2.11-2.fc18.noarch           @fedora
    Actualizar                            0.2.12-1.fc18.noarch           @updates
    Actualizado                 git-1.8.0.2-1.fc18.x86_64                @updates
    Actualizar                      1.8.1-1.fc18.x86_64                  @updates
 ** Actualizado                 libcdr-0.0.8-2.fc18.x86_64               @fedora
    Actualizar                         0.0.9-2.fc18.x86_64               @updates
 ** Actualizado                 lsof-4.86-4.fc18.x86_64                  @fedora
    Actualizar                       4.87-1.fc18.x86_64                  @updates
 ** Actualizado                 nmap-ncat-2:6.01-8.fc18.x86_64           @fedora
    Actualizar                            2:6.01-9.fc18.x86_64           @updates
    Actualizado                 perl-Git-1.8.0.2-1.fc18.noarch           @updates
    Actualizar                           1.8.1-1.fc18.noarch             @updates
    Instalación de dependencias qtlockedfile-2.4-5.fc18.x86_64           @fedora
    Instalación de dependencias qtsingleapplication-2.6.1-7.fc18.x86_64  @fedora
    Instalación de dependencias quazip-0.5-1.fc18.x86_64                 @fedora
    Instalar                    smplayer-0.8.3-2.fc18.x86_64             @rpmfusion-free
history info

Tras esto, podía saber exactamente cuales fueron las acciones que realizaba el sistema cuando falló, y ejecutando un último comando pude reinstalar todos esos paquetes y garantizar en gran medida que mi sistema queda íntegro:

[root@localhost ~]# yum reinstall apper-0.8.0-2.fc18.x86_64 firewall-config-0.2.12-1.fc18.noarch firewalld-0.2.12-1.fc18.noarch git-1.8.1-1.fc18.x86_64 libcdr-0.0.9-2.fc18.x86_64 lsof-4.87-1.fc18.x86_64 nmap-ncat-2:6.01-9.fc18.x86_64 perl-Git-1.8.1-1.fc18.noarch qtlockedfile qtsingleapplication quazip smplayer

Como se puede ver, en la mayor parte de los paquetes especifiqué la versión y arquitectura exactas, esto es porque de otro modo, YUM podría no saber a que arquitectura o versión me refiero, sobretodo en sistemas x86_64, donde se pueden disponer de las versiones de 64 bits y 32 bits de un paquete instaladas al mismo tiempo, para mantener la retrocompatibilidad.

Yum history permite hacer muchas más cosas muy interesantes, pero no las comentaré ahora, es posible que más adelante haga un post mas completo acerca de esta funcionalidad y sus posibilidades. Por ahora, solo me queda esperar que mi experiencia le sirva a alguien que tenga un problema parecido.

Política de comentarios

Dada la importancia de los comentarios como espacio de participación, te pedimos por favor que leas detenidamente y cumplas con las siguientes normas de participación.

Deja un comentario

Tu dirección de correo electrónico no será publicada.