"Después del juego es antes del juego"
Sepp Herberger

martes, 27 de junio de 2017

Hacer rollback de paquetes en Manjaro/Arch

El otro día hice una macroactualización de paquetes que me pedía desde hacía tiempo mi Manjaro de casa. A raíz de ello Steam dejó de funcionar, quedaba cargando sin avanzar nada y mis hijos, con un juego recién comprado, estaban bastante nerviosos.

Después de investigar un poco veo que es debido a la actualización del paquete con los drivers nvidia-340. La última versión de los mismos fastidia Steam (y más aplicaciones que usan opengl) tanto en Arch/Manjaro como en Ubuntu. Como no hay paquetes mas modernos todo apuntaba a que había metido la pata hasta el corvejón.

Entonces se me ocurrió: ¿no tendrá Manjaro algún sistema para volver a paquetes antiguos de una forma sencilla?. A fin de cuentas, Manjaro es la distribución de Linux mas molona. Pues si, lo tiene: la herramienta downgrade.

Primero tengo que ver que paquetes tengo instalados y a que paquetes puedo retroceder haciendo "rollback" en el tiempo. Para ello tecleo como root:

 # cd /var/cache/pacman/pkg
# ls -l *nvidia*

-rw-r--r-- 1 root root 20244996 dic 15  2016 lib32-nvidia-340xx-utils-340.101-1-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root 20772404 abr  3 16:07 lib32-nvidia-340xx-utils-340.101-6-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root  4780584 mar 29 18:21 linux44-nvidia-340xx-340.101-12-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root  4780588 abr  3 16:06 linux44-nvidia-340xx-340.101-14-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root  4779356 mar  5 09:37 linux44-nvidia-340xx-340.101-9-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root  4783180 jun 14 23:03 linux44-nvidia-340xx-340.102-2-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root  4779072 mar  5 09:37 linux49-nvidia-340xx-340.101-11-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root  4779532 mar 29 18:21 linux49-nvidia-340xx-340.101-14-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root  4779344 abr  3 16:06 linux49-nvidia-340xx-340.101-18-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root  4783088 jun 17 16:45 linux49-nvidia-340xx-340.102-3-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root  4783856 jun 24 12:22 linux49-nvidia-340xx-340.102-4-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root    10508 dic 15  2016 mhwd-nvidia-1:375.26-1-any.pkg.tar.xz
-rw-r--r-- 1 root root    10624 mar  5 09:33 mhwd-nvidia-1:375.39-1-any.pkg.tar.xz
-rw-r--r-- 1 root root    15408 may  5 09:29 mhwd-nvidia-1:375.66-1-any.pkg.tar.xz
-rw-r--r-- 1 root root    10644 dic 15  2016 mhwd-nvidia-304xx-1:304.134-1-any.pkg.tar.xz
-rw-r--r-- 1 root root    10608 dic 15  2016 mhwd-nvidia-340xx-340.101-1-any.pkg.tar.xz
-rw-r--r-- 1 root root     6452 jun 16 19:25 mhwd-nvidia-340xx-340.102-1-any.pkg.tar.xz
-rw-r--r-- 1 root root 23768104 feb 17 18:26 nvidia-340xx-utils-340.101-1-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root 23787724 mar  5 09:37 nvidia-340xx-utils-340.101-3-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root 23800248 abr  3 16:06 nvidia-340xx-utils-340.101-8-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root 23803844 jun 10 14:22 nvidia-340xx-utils-340.102-1-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root 10600616 feb 17 18:26 opencl-nvidia-340xx-340.101-1-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root 10589732 jun 10 14:23 opencl-nvidia-340xx-340.102-1-x86_64.pkg.tar.xz
Aquí se ve la lista de paquetes cacheados y que puedo instalar. En mi caso el fallo ha venido por actualizar el otro día a nvidia-340xx-utils-340.102-1-x86_64.pkg.tar.xz, generado el 10 de junio. Debo volver a uno anterior, cuando Steam funcionaba, por ejemplo nvidia-340xx-utils-340.101-8-x86_64.pkg.tar.xz del 3 de abril.

El problema es que no solo basta con volver atrás dicho paquete, ya que tiene como dependencias linux49-nvidia-.. y linux44-nvidia-.. y por tanto también tengo que volver a la versión de 3 de abril de ambos paquetes (que son del kernel, por cierto). Las versiones destino son:
-rw-r--r-- 1 root root  4780588 abr  3 16:06 linux44-nvidia-340xx-340.101-14-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root  4779344 abr  3 16:06 linux49-nvidia-340xx-340.101-18-x86_64.pkg.tar.xz
-rw-r--r-- 1 root root 23800248 abr  3 16:06 nvidia-340xx-utils-340.101-8-x86_64.pkg.tar.xz
Empezamos instalando:
# sudo pacman -S downgrade
y hacemos el downgrade de los 3 paquetes:
# sudo downgrade linux49-nvidia-340xx nvidia-340xx-utils linux44-nvidia-340xx 
El comando nos preguntará de forma interactiva que versiones instalar mediante un menú del tipo 1) 2) 3)... simplemente elegimos el paquete correcto en cada una de las listas que nos muestra y le dejamos hacer. Si elegimos paquetes no compatibles (por tema de dependencias) el proceso se interrumpe y nos dice que paquete causa el problema.

Tras instalar los paquetes correctos, reiniciamos al acabar y.... tachán, ya funciona Steam. Ya puedo dormir tranquilo.

Para evitar las preguntas podríamos forzarle a que haga el downgrade instalando nosotros los paquetes directamente con:
# cd /var/cache/pacman/pkg
# pacman -U linux44-nvidia-340xx-340.101-14-x86_64.pkg.tar.xz linux49-nvidia-340xx-340.101-18-x86_64.pkg.tar.xz
nvidia-340xx-utils-340.101-8-x86_64.pkg.tar.xz
También es importante dejar esos paquetes a salvo de futuras actualizaciones en tanto en cuanto no estemos seguros de que el problema persiste. Eso se hace editando /etc/pacman.conf y añadiendo
...
...
IgnorePkg=linux49-nvidia-340xx nvidia-340xx-utils linux44-nvidia-340xx 
...
...
Como siempre, dejo abierta una línea de investigación para volver aquí si hace falta: ¿qué pasa si queremos ir mas atrás y usar paquetes que no están en cache (/var/cache/pacman/pkg)?. Pues si hacemos:
# downgrade
Branch = stable
Downgrading from A.L.A. is disabled on the stable branch. See https://wiki.archlinux.org/index.php/downgrading_packages for more details.
Uso: downgrade , ... [-- ]
ver downgrade(8) para más detalles.
Podemos ver que hay algo llamado "A.L.A." que es el repositorio online de paquetes antiguos. No he investigado más pero queda apuntado que podemos ir mas atrás en el rollback usando esta funcionalidad.

Bueno, pues tarea resuelta, ya podemos relajarnos con unos minutos musicales mientras los niños le dan caña al Steam...


No hay comentarios:

Publicar un comentario