Comprobar dependencias inversas y simular la eliminación de paquetes con rpm -e --test
En este paso, aprenderás a comprobar las dependencias inversas y a simular de forma segura la eliminación de un paquete. Mientras que el comando rpm -qR muestra lo que un paquete necesita (sus dependencias), rpm -q --whatrequires muestra qué otros paquetes lo necesitan a él (sus dependencias inversas). Es extremadamente importante saber esto antes de eliminar un paquete, ya que podrías romper otras partes del sistema.
Para comprobar de forma segura las consecuencias de eliminar un paquete, puedes usar el comando rpm -e --test. La bandera -e significa 'erase' (borrar) y la bandera --test le indica a RPM que realice un simulacro sin eliminar realmente ningún archivo.
Comencemos examinando un paquete central del sistema del que dependen muchos otros paquetes. El paquete glibc proporciona la Biblioteca GNU C, que es fundamental para casi todos los programas en un sistema Linux. Comprobemos qué paquetes requieren glibc.
rpm -q --whatrequires glibc
La salida mostrará varios paquetes que dependen de glibc:
glibc-common-2.34-168.el9_6.19.x86_64
glibc-langpack-en-2.34-168.el9_6.19.x86_64
libstdc++-11.5.0-5.el9_5.x86_64
glibc-headers-2.34-168.el9_6.19.x86_64
pam-1.5.1-23.el9.x86_64
glibc-devel-2.34-168.el9_6.19.x86_64
nscd-2.34-168.el9_6.19.x86_64
Como puedes ver, muchos paquetes críticos del sistema dependen de glibc. Ahora veamos qué sucede cuando intentamos eliminar glibc. Usaremos la bandera --test para asegurarnos de no eliminarlo realmente, lo que rompería todo el sistema.
sudo rpm -e --test glibc
Debido a que tantos paquetes necesitan glibc, RPM informará de errores de dependencia y evitará la eliminación. La salida mostrará una larga lista de dependencias fallidas:
error: Failed dependencies:
glibc = 2.34-168.el9_6.19 is needed by (installed) glibc-common-2.34-168.el9_6.19.x86_64
glibc = 2.34-168.el9_6.19 is needed by (installed) glibc-langpack-en-2.34-168.el9_6.19.x86_64
glibc >= 2.34 is needed by (installed) libstdc++-11.5.0-5.el9_5.x86_64
... (errores de dependencia adicionales)
Ahora miremos un paquete con menos dependencias. El paquete lsscsi que instalamos anteriormente es un paquete de utilidad con menos dependencias inversas. Comprobemos qué lo requiere:
rpm -q --whatrequires lsscsi
Deberías ver una salida indicando que ningún paquete requiere lsscsi:
no package requires lsscsi
Dado que ningún paquete depende de lsscsi, podemos simular su eliminación de forma segura:
sudo rpm -e --test lsscsi
Este comando debería completarse sin errores, indicando que la eliminación de lsscsi no rompería ningún otro paquete en el sistema.
Esto demuestra cómo puedes predecir el impacto de eliminar un paquete y evitar romper tu sistema comprobando primero las dependencias inversas.