Cómo hacer un «downgrade» de un paquete en Arch Linux

Escrito por picodotdev el , actualizado el .
gnu-linux
Enlace permanente Comentarios

Arch Linux

Arch Linux es un distribución rolling release en la que los paquetes son actualizados constantemente en cuanto sale una nueva versión. Esto tiene la ventaja de que siempre se tiene el sistema actualizado con las versiones más recientes de los programas, en los que se van añadiendo nuevas características y corrigiendo errores de seguridad y funcionales. Sin embargo, en algún momento puede ocurrir que una actualización de algún paquete nos introduzca algún error, en este caso podemos hacer una desactualización o downgrade de paquete y volver a la última versión estable.

No es habitual que haya errores pero puede darse el caso, antes de hacer una desactualización es recomendable buscar en los foros de arch linux una respuesta con una alternativa mejor. En todo este tiempo como usuario de Arch Linux, más de 5 años, los downgrades que he tenido que hacer han sido dos, uno para el paquete de subversion y el que voy a comentar.

El último caso ha sido para el paquete de networkmanager al actualizarse a la versión 1.0.0-1 desde la 0.9.10.0-4. El problema que me ocasionaba era varios intentos de conexión y desconexión tanto de la red cableada como de la wifi, después de varios intentos seguidos y menos de un minuto conseguía conectarse a la red correctamente pero era un poco molesto. En los foros de Arch Linux hay varios mensajes de otros usuarios con el mismo problema I, II y III, donde se comenta algunas alternativas, una de ellas la desactualización del paquete.

En la página desactualizar paquetes de la wiki de Arch Linux hay información más detallada de la desactualización de un paquete.

Cómo hacer downgrade de un paquete

El proceso de desactualización o downgrade no tiene complicación, basta con lanzar un comando, se desactualiza el paquete y sus dependencias con la limitación de que en el caso de conflictos con otros paquetes también hay que desactualizar esos otros paquetes.

1
2
$ sudo pacman -U /var/cache/pacman/pkg/networkmanager-0.9.10.0-4-x86_64.pkg.tar.xz

pacman-downgrade.sh

Arch Linux guarda en una caché del sistema de archivos local todos los paquetes con sus versiones que descarga, la caché se encuentra por defecto en el directorio /var/cache/pacman/pkg/.

Cómo buscar un paquete de una versión anterior

Para hacer una desactualización hay que tener la versión del paquete a la que hacer downgrade, si no se ha hecho una limpieza de la caché de los paquetes viejos no usados con el comando pacman -Sc están en el directorio de caché de paquetes. Si se ha hecho la limpieza de la caché y no se dispone del paquete hay que buscar en alguna réplica menos actualizada la versión del paquete desactualizado.

Otra posibilidad es usar Arch Rollback Machine que va almacenando instantáneas de las últimas versiones de los paquetes, de los repositorios organizados por fecha y de las imágenes iso del medio de instalación. Usando estas instantáneas de paquetes se puede encontrar una versión desactualizada de cualquier paquete individual. En los casos más extremos Arch Rollback Machine ofrece la posibilidad de desactualizar un equipo completamente a una fecha concreta, aunque no es recomendable.

Indicando en el comando la dirección completa del paquete este es descargado y desactualizado.

1
2
$ sudo pacman -U https://archive.archlinux.org/packages/n/networkmanager/networkmanager-0.9.10.0-4-x86_64.pkg.tar.xz

pacman-arm.sh

Cómo práctica recomendable es mantener hasta la siguiente actualización los paquetes en la caché, una vez actualizado el sistema y comprobado que todo sigue funcionando correctamente. Antes de una actualización se puede eliminar de la cache los paquetes viejos no usados, se actualiza el sistema, con lo que se tiene en la cache los paquetes nuevos y viejos, se comprueba que el sistema funciona correctamente y si hay que hacer un downgrade de alguno se dispone de él en la cache local.

La secuencia de comandos en una actualización que uso es la siguiente.

1
2
$ sudo pacman -Sc
$ sudo pacman -Syu
pacman-update.sh

Cómo evitar que un paquete se actualice

Para evitar que un paquete sea actualizado en la siguiente actualización del sistema hay añadirlo a la lista de paquetes ignorados IgnorePkg del archivo /etc/pacman.conf.

1
2
IgnorePkg = networkmanager

pacman.conf

No es recomendable mantener muchos paquetes desactualizados y en la lista de IgnorePkg ya que estos pueden tener dependencias sobre paquetes también desactualizados, solo debe ser empleado para casos puntuales.

Comparte el artículo: