AWS - Deshacer actualizaciones de paquetes en Amazon Linux

Publicado el 25 noviembre 2019 por Dbigcloud @dbigcloud

Las actualizaciones de paquetes en Amazon Linux funcionan bastante bien. Bugs, fallos de seguridad u otros problemas son corregidos rápidos casi a diario en muchos paquetes. AWS los incorpora lo antes posible en sus repositorios para que estén disponible, pero a veces este tipo de actualizaciones pueden perjudicar alguna herramienta o servicio que se esté utilizando. Hoy se verá cómo revertir una actualización en Amazon Linux.

NOTA: Aunque este post está enfocado para Amazon Linux, es válido para cualquier tipo de distribución basada en Red Hat (Centos, Fedora...).

Cuando se utilizan frameworks, con continuos cambios en el lenguaje de programación usado, se puede dar el caso que una actualización de un paquete deje un servicio sin funcionamiento. Suele producirse con más frecuencia en los lenguajes de programación PHP, Python o Nodejs que se encuentran en continua evolución. Esto puede suponer un problema grave si el servicio o herramienta se encuentra en producción. 

Es muy recomendable, antes de aplicar una actualización de un paquete, leer el changelog. De esta forma se evitarían estos fallos, aunque se sabe que pocas veces se hace. La herramienta YUM, encargada de la gestión de paquetes en las distribuciones mencionadas anteriormente, permite revertir actualizaciones de forma automática.

Gestión de actualizaciones con yum history

La opción yum history permite gestionar las actualizaciones de paquetes realizadas. Mediante ciertos parámetros se podrá operar con las actualizaciones, estos son los siguientes:

yum history list #muestra las 20 últimas transacciones de actualización que se han realizado.

De la siguiente imagen hay tres campos muy importantes: ID, Date and Time y Actions.

  • ID: Corresponde al identificador de la transacción que se ha realizado.
  • Date and time: Muestra la hora y fecha en que se realizó dicha transacción.
  • Actions: Muestra las operaciones que se realizaron.
    • I -> Instalación
    • U -> Actualización.
    • E -> Eliminación.
    • O -> Obsoleto.
    • R -> Reinstalación.
    • D -> Desactualización.

Para conocer el listado de paquetes que contiene una transacción se utiliza:

yum history info IDNUBMER #muestra todos los paquetes que han intervenido en la transacción.

Si se desea consultar el historial de actualizaciones de un paquete el comando es:

yum history info NombrePaquete #muestra todas las transacciones en la que ha intervenido el paquete.

Para deshacer todos los cambios aplicador en una transacción se hace con el comando:

yum history rollback IDNUBMER #Solicitará confirmación para deshacer los cambios realizados en la transacción.

Con este último comando se puede corregir un problema ocasionado por una actualización de paquetes, deshaciendo la transacción.

Recomendación: Las actualizaciones de paquetes deberían de aplicarse siempre que sea posible. En muchas ocasiones, estas corrigen problemas de seguridad. Si te has visto envuelto en un problema ocasionado por un paquete, haz un rollback, lee el changelog y trata de corregir la herramienta o servicio que esté fallando en base a los cambios nuevos. Si el problema solo lo ocasiona un paquete, pero hay más pendiente de actualizar, mientras corrige la herramienta puedes realizar un workaround para actualizar el resto menos ese paquete. Para ello debes de añadir la siguiente linea al fichero /etc/yum.conf

exclude=php* #excluirá del yum update todos los paquetes relacionados con php

Una vez hayas adaptado la herramienta a los nuevos cambios, descomenta la línea y procede a la actualización.


Compártelo: