Arch Linux es a menudo elogiado por su software de vanguardia y su modelo de liberación continua. Discutimos estas características más a fondo en nuestro artículo comparando Arch Linux y Manjaro. Además de esta alabanza, Arch Linux también tiene una reputación de ser inestable. Esta reputación proviene de la naturaleza a veces impredecible del software de vanguardia. El último software de los desarrolladores upstream puede contener errores que no eran evidentes durante las pruebas iniciales. Como resultado, siempre está presente el riesgo de que la actualización con el gestor de paquetes, pacman
, puede traer resultados inesperados. Estos pueden incluir que una pieza específica de software ya no funcione correctamente (o en absoluto) o incluso que múltiples aplicaciones o Entornos de Escritorio dejen de funcionar como se esperaba.
Hacer copias de seguridad de su sistema GNU/Linux regularmente es la mejor salvaguarda para mitigar el dolor de cabeza que esto podría causar. No hay escasez de soluciones de respaldo para Linux; algunas de las opciones de respaldo incluyen dd, BackupPC, rsync, Fsarchiver , rsnapshot. Si tiene una solución de copia de seguridad regular en su lugar, entonces puede ser reconfortante saber que podría restaurar desde una copia de seguridad en el caso de que una pacman
actualización causara problemas, pero sería ideal si no tuviera que hacerlo. En este artículo le mostraremos cómo revertir las actualizaciones de pacman
en Arch Linux. Hay dos maneras de lograr esto. Una forma es a través del pacman cache
; la otra es utilizando el Arch Linux Archive
. Hablaremos de ambos métodos.
En este tutorial aprenderás:
- Cómo hacer rollback de las actualizaciones de Arch Linux utilizando la caché de pacman
- Cómo hacer rollback de las actualizaciones de Arch Linux utilizando el Archivo de Arch Linux
Requisitos de software y convenciones utilizadas
Categoría | Requisitos, Convenciones o versión de software utilizada |
---|---|
Sistema | Arch Linux |
Software | pacman | Otros | Acceso privilegiado a tu sistema Linux como root o mediante el comando sudo . |
Convenciones | # – requiere que los comandos de linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso del sudo comando$ – requiere que los comandos de linux dados se ejecuten como unprivilegiado |
Cómo revertir las actualizaciones de Arch Linux usando el pacman caché
Cada vez que instalas o actualizas un paquete pacman
guarda este paquete en /var/cache/pacman/pkg/
pacman
también permite actualizar manualmente un paquete a través de la bandera -U
. Resulta que este método de actualización también se puede utilizar para instalar una versión anterior del paquete, lo que supone un downgrade del mismo.
Downgrade de un solo paquete
Supongamos que acabas de actualizar tu sistema mediante el comando $ sudo pacman -Syu
y luego abres firefox
para navegar por la web, sólo para darte cuenta de que ahora se bloquea mientras que antes no lo hacía. Puedes hacer fácilmente un downgrade de firefox
a la versión anterior que tenías instalada usando el pacman cache.
Primero, examina los paquetes firefox
listados en /var/cache/pacman/pkg/
$ ls /var/cache/pacman/pkg/firefox*
Deberías ver la última versión a la que acabas de actualizar y las versiones anteriores que tenías instaladas. En nuestro ejemplo, esta es la salida que recibimos.
/var/cache/pacman/pkg/firefox-81.0.1-1-x86_64.pkg.tar.zst/var/cache/pacman/pkg/firefox-83.0-2-x86_64.pkg.tar.zst
Sabemos que hemos actualizado de la versión 81.0.1-1
a 83.0-2
y sospechamos que puede haber causado un problema. Para comprobar esta teoría, basta con hacer un rollback a la versión 81.0.1-1
utilizando la caché de pacman con el siguiente comando.¡
$ sudo pacman -U /var/cache/pacman/pkg/firefox-81.0.1-1-x86_64.pkg.tar.zst
El Instituto Geofísico de la UAF, está buscando un Analista de Sistemas Linux con experiencia para unirse a su equipo de analistas e ingenieros de ciberinfraestructura de investigación. UBICACIÓN: Fairbanks, Alaska, USA
APLICA AHORA
Verás la siguiente salida.
loading packages...warning: downgrading package firefox (83.0-2 => 81.0.1-1)resolving dependencies...looking for conflicting packages...Packages (1) firefox-81.0.1-1Total Installed Size: 206.76 MiBNet Upgrade Size: -0.13 MiB:: Proceed with installation?
Una vez que escribas y
para continuar tendrás la versión previamente instalada de firefox
instalada y podrás abrirla para ver si se ha resuelto la incidencia.
Downgrade de múltiples paquetes
Usando la caché de pacman, puedes hacer downgrade de múltiples paquetes proporcionándolos como argumentos separados a pacman -U
. Por ejemplo
$ sudo pacman -U /var/cache/pacman/pkg/firefox-81.0.1-1-x86_64.pkg.tar.zst /var/cache/pacman/pkg/alsa-lib-1.2.3.2-1-x86_64.pkg.tar.zst /var/cache/pacman/pkg/adwaita-icon-theme-3.38.0-1-any.pkg.tar.zst
Cuando se degrade múltiples paquetes puede ser beneficioso moverse al directorio /var/cache/pacman/pkg
para no tener que escribir la ruta completa de cada paquete que se quiera degradar.
$ cd /var/cache/pacman/pkg$ sudo pacman -U firefox-81.0.1-1-x86_64.pkg.tar.zst alsa-lib-1.2.3.2-1-x86_64.pkg.tar.zst adwaita-icon-theme-3.38.0-1-any.pkg.tar.zst
Lo más probable es que estés empezando a pensar que degradar un gran número de paquetes de esta manera sería, como mínimo, tedioso. Puede encontrarse en situaciones en las que sospecha que 20 paquetes diferentes podrían estar causando potencialmente un problema o no tiene idea de qué paquetes están causando un problema y quiere degradar todos ellos. Estos escenarios pueden ser más adecuados para usar el Arch Linux Archive
, pero antes de discutir eso vamos a examinar algunos ejemplos de situaciones en las que podríamos hackear una solución para usar el pacman cache
para este propósito, sin tener que escribir manualmente cada nombre de paquete.
Actualización de múltiples paquetes relacionados con un esquema de nomenclatura similar
Suponga que acaba de encender su máquina después de no usarla durante unas semanas. Procedes a actualizar tu sistema a través del comando $ sudo pacman -Syu
y te das cuenta de que todas tus aplicaciones basadas en qt no funcionan correctamente, pero todas las demás apps sí. Debido a que muchos de los paquetes y bibliotecas fundacionales de qt tienen qt
en el nombre del archivo y es muy poco probable que cualquier paquete que no sea de qt tenga esto en el nombre del archivo, es posible revertir sólo las actualizaciones de qt desde la última actualización del sistema.
Cada vez que se realiza una actualización utilizando pacman
se mantiene un registro de lo que se ha actualizado exactamente y cuándo en /var/log/pacman.log
. A continuación, una línea de ejemplo.
upgraded qt5-xmlpatterns (5.15.1-1 -> 5.15.2-1)
Podemos utilizar este registro para ayudarnos a bajar sistemáticamente sólo los paquetes qt buscando las líneas en el pacman.log
que muestren paquetes que contengan qt en el nombre de archivo y que hayan sido actualizados hoy y realizando alguna manipulación de texto sobre ellos para luego proporcionarlos como argumentos a pacman -U
en un bucle for. El ejemplo siguiente asume que la fecha actual es el 30 de noviembre de 2020. Ajusta la fecha en consecuencia si quieres hacer uso de ella.
$ grep -a qt /var/log/pacman.log | grep 2020-11-30 > /tmp/qtupdates.txt$ awk '{print $4}' /tmp/qtupdates.txt > /tmp/lines1;awk '{print $5}' /tmp/qtupdates.txt | sed 's/(/-/g' > /tmp/lines2$ paste /tmp/lines1 /tmp/lines2 > /tmp/lines$ tr -d "" < /tmp/lines > /tmp/packages$ cd /var/cache/pacman/pkg/$ for i in $(cat /tmp/packages); do sudo pacman --noconfirm -U "$i"*; done
Actualización de todos los paquetes actualizados
Supón que acabas de encender tu máquina después de no usarla durante unas semanas. Procedes a actualizar tu sistema a través del comando $ sudo pacman -Syu
y entonces notas que todo tu sistema se siente anormalmente lento. No tienes ni idea de qué actualización de paquetes puede estar causando esto y quieres retroceder temporalmente los 512 a la versión anterior que tenías instalada.
Esto en realidad no requiere más esfuerzo que el ejemplo anterior. Realiza los mismos pasos excepto que utiliza el archivo pacman.log
para obtener los nombres de todos los paquetes que se actualizaron hoy y no sólo los que se ajustan a un esquema de nomenclatura particular. Esto funcionará para cualquier número de paquetes, esencialmente funcionando como un gran botón de deshacer para pacman
. El ejemplo siguiente asume que la fecha actual es el 30 de noviembre de 2020. Ajuste la fecha en consecuencia si desea hacer uso de ella.
$ grep -a upgraded /var/log/pacman.log| grep 2020-11-30 > /tmp/lastupdates.txt $ awk '{print $4}' /tmp/lastupdates.txt > /tmp/lines1;awk '{print $5}' /tmp/lastupdates.txt | sed 's/(/-/g' > /tmp/lines2$ paste /tmp/lines1 /tmp/lines2 > /tmp/lines$ tr -d "" < /tmp/lines > /tmp/packages$ cd /var/cache/pacman/pkg/$ for i in $(cat /tmp/packages); do sudo pacman --noconfirm -U "$i"*; done
Cómo revertir las actualizaciones de Arch Linux utilizando el Archivo de Arch Linux
El Archivo de Arch Linux es un archivo oficial que contiene instantáneas de versiones anteriores de los paquetes. Estos se guardan en el directorio de paquetes del sitio. Hay dos beneficios potenciales al usar el Arch Linux Archive
sobre el pacman cache
. En primer lugar, el pacman cache
ocupa espacio en su almacenamiento local. Como resultado, algunas personas optarán por borrar regularmente su caché. En segundo lugar, el archivo pone a disposición todas las versiones anteriores de un paquete, no sólo las que había instalado previamente.
Descarga un solo paquete
Para descargar un paquete a una versión anterior, primero hay que encontrarlo en el archivo y luego utilizar pacman
para descargar esa versión específica. Si volvemos a examinar nuestro ejemplo anterior de degradar Firefox
, ya no estamos limitados a degradar de la versión 83.0-2
a 81.0.1-1
. Como se puede ver en el archivo de firefox, también tenemos la opción de hacer downgrade a las siguientes versiones intermedias: 81.0.2-1, 82.0-1, 82.0.2-1, 82.0.3-1, 83.0-1
.
Para hacer un downgrade a la versión Firefox
83.0-1
utilizando el Arch Linux Archive
introduce el siguiente comando.
$ sudo pacman -U https://archive.archlinux.org/packages/f/firefox/firefox-83.0-1-x86_64.pkg.tar.zst
Actualizar todos los paquetes a una fecha anterior
Otra opción que tienes disponible al utilizar el Arch Linux Archive
es restaurar todos los paquetes de tu sistema a la versión «actual» que existía en los repositorios en una fecha concreta. Esto puede ser útil si está encontrando problemas con su sistema Arch ahora, pero recuerda que hace unas semanas no tenía esos problemas. En el siguiente ejemplo, vamos a degradar todos los paquetes al 10 de noviembre de 2020. Para hacer el downgrade de los paquetes tendremos que hacer saber a pacman que queremos usar el repo de archivos editando /etc/pacman.d/mirrorlist
. Antes de realizar cualquier cambio en el archivo, es recomendable hacer una copia de seguridad para poder volver fácilmente al archivo actual mirrorlist
cuando lo deseemos.
$ sudo cp /etc/pacman.d/mirrorlist{,.bak}
A continuación, edita tu archivo /etc/pacman.d/mirrorlist
con el editor que prefieras:
$ sudo vim /etc/pacman.d/mirrorlist
y cambia el contenido por el siguiente.
### Arch Linux repository mirrorlist### Created to downgrade to Nov 10th 2020Server=https://archive.archlinux.org/repos/2020/10/11/$repo/os/$arch
Ahora para finalizar el downgrade de los paquetes introduce el siguiente comando.
$ sudo pacman -Syyuu
Conclusión
En este artículo hemos examinado dos métodos para hacer rollback o downgrade de paquetes en Arch Linux, el pacman cache
y el Arch Linux Archive
. Ambos son métodos potentes que tienen sus propias ventajas. Reflexionemos brevemente sobre esas ventajas mientras concluimos este artículo.
La principal ventaja de utilizar el pacman cache
es que no requiere conexión a internet ni descarga de paquetes, ya que se almacena localmente. Como resultado, el proceso de downgrade es más rápido. Otro beneficio es que el pacman cache
contiene versiones de paquetes que has instalado en tu sistema antes, por lo tanto es muy probable que tengas una idea de lo bien que funcionaban. Una tercera ventaja es que puedes hacer un downgrade de múltiples paquetes sin tener que editar ningún archivo de configuración.
La principal ventaja de utilizar el Arch Linux Archive
es que puedes hacer un downgrade a cualquier versión de un paquete independientemente de si lo habías instalado previamente. Otra ventaja es que no ocupa almacenamiento local, por lo que si se está quedando sin almacenamiento y quiere limpiar su caché de pacman, sabe que hay otra opción viable para hacer un downgrade. Un tercer beneficio es que usted puede fácilmente degradar cada paquete en su sistema con sólo editar un único archivo de configuración.