Este artículo explica cómo forzar la reinstalación de un único paquete (desinstalar y volver a instalar), sin afectar sus dependencias reversas (paquetes que dependen del mismo) al momento de la desinstalación.

El día de ayer un compañero estaba teniendo problemas serios con el paquete mysql-server-8.0 en Ubuntu 20.04 ya que había borrado por error el usuario root (cosas locas que hacen los devs) y el servidor había quedado en un estado irrecuperable. Se pudo crear un nuevo root pero no había chance de establecer su contraseña, ni siquiera iniciando mysqld_safe con un archivo de inicialización personalizado o cambiando el plugin de autenticación para la nueva cuenta.

Pero el problema mayor es que, al no haber usuario root de MySQL, el script de post-instalación del paquete mysql-server-8.0 fallaba dejando al gestor de paquetes en un estado de error:

ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost'?

Por esta razón no se podía instalar nuevos paquetes, ni actualizar el sistema.

Siendo un sistema de escritorio y ya que no había bases de datos en uso, la solución rápida y fácil fue reinstalar mysql-server-8.0.

# apt-get purge mysql-server-8.0
# apt-get install mysql-server-8.0

Al menos esta era mi idea. Sin embargo, no era posible desinstalar mysql-server-8.0 sin "romper" el resto del sistema. Al utilizar el entorno de escritorio KDE, el cual requiere MySQL, no era posible desinstalar el paquete mysql-server-8.0 sin desinstalar prácticamente todos los paquete de KDE (con el riesgo de quedarse sin un entorno de escritorio funcional).

La solución entonces consiste en reinstalar el paquete en lugar de desinstalar y volver a instalar. Para ello apt-get tiene la opción --reinstall:

# apt-get --reinstall install mysql-server-8.0

De esta forma se reinstala el paquete en cuestión sin tocar ninguna de sus dependencias reversas (sin afectar a los paquetes que dependen del mismo).

Con esta simple solución MySQL volvió a la vida y se pudo continuar con la actualización del sistema para reparar el estado inconsistente del sistema.

Compartí este artículo