Por qué la base de datos rpm se corrompe
Puede haber múltiples razones que pueden conducir a la corrupción de la base de datos rpm. No se puede identificar exactamente un solo RCA debido a las limitaciones, no existe un mecanismo para monitorear la corrupción de la base de datos rpm.
– La base de datos rpm se consulta cada vez que el administrador/algún proceso ejecuta cualquier comando rpm.
– Incluso durante las transacciones yum, la base de datos rpm se altera mucho.
– Un pequeño puntero también puede causar tal corrupción.
– Si LD_LIBRARY_PATH se establece en algún valor, incluso la base de datos rpm se corrompe.
– Si se instala un paquete de terceros que provoca cambios innecesarios en la base de datos rpm.
– Las transacciones incompletas también pueden provocar tales corrupciones.
– En el caso de una partición /var ubicada en volúmenes SAN.
Entonces, en total, se pueden considerar muchos factores para tal corrupción de la base de datos rpm. Si la base de datos RPM se corrompe con frecuencia, se recomienda realizar una copia de seguridad de la base de datos RPM con frecuencia a través de cron.
Reparar la base de datos RPM
La herramienta RPM utiliza su propia implementación de base de datos personalizada para contener su información. A veces esa base de datos puede corromperse; los síntomas incluyen reclamos de que falta un paquete RPM instalado; o los intentos de actualizar un RPM simplemente se cuelgan. Los intentos de consultar (rpm -q) algunos paquetes pueden fallar con el siguiente error.
rpmdb: /var/lib/rpm/Packages: unexpected file type or format error: cannot open Packages index using db3 - Invalid argument (22)
Si su base de datos RPM está bloqueada o dañada, puede intentar repararla con estos comandos. Tenga en cuenta:No se garantiza que este proceso funcione. Debe iniciar sesión con privilegios de superusuario (también conocido como "root") para realizar estos pasos. Los comandos se pueden copiar y pegar directamente en una ventana de terminal raíz.
1. Asegúrese de que no queden procesos RPM ejecutándose en su sistema. Utilice el comando ps para identificarlos. Use el comando matar para terminar cualquier proceso de "rpm" que encuentre; puede ser necesario un "matar -9".
# ps -ef | grep-i rpm
2. Elimine los archivos de bloqueo que utiliza RPM:
# rm -f /var/lib/rpm/__db*
# /usr/lib/rpm/rpmdb_verify /var/lib/rpm/Packages
3. Si estaba experimentando un comando de "rpm" colgado, inténtelo de nuevo. Si funciona, estás acabado. Si no es así, vuelva a realizar los pasos 1 y 2. Luego continúe con el siguiente paso.
4. Haz una copia de seguridad de tu base de datos RPM:
# cd /var/lib # mkdir rpm-backup # rsync -av ./rpm/. ./rpm-backup/.
5. Reconstruya su base de datos RPM:
# rpm -vv --rebuilddb > /tmp/rpmrebuilddb.log 2>&1
6. Intente verificar la base de datos rpm nuevamente.
# cd /var/lib/rpm # /usr/lib/rpm/rpmdb_verify PackagesNota :Si los pasos de recuperación anteriores fallan o arrojan errores, restaurar el directorio /var/lib/rpm desde una copia de seguridad reciente del sistema puede ser su mejor opción. Recuerde no sobrescribir la copia de seguridad de alquitrán, ya que aún puede ser valiosa.
6. Vuelva a intentar su comando RPM fallido.
Ejemplos de comandos RPM para consultar, instalar, eliminar y actualizar paquetes