Reparar la base de datos de RPM de Linux RedHat

De vez en cuando me encuentro con que voy a instalar un nuevo paquete RPM en Linux RedHat con yum o con el propio comando rpm pero no puedo hacerlo debido a una corrupción de la base de datos de RPM, devolviendo un error del siguiente estilo:

[root@losbdot0 ~]# rpm -qa |grep -i py
error: db3 error(12) from dbenv->open: Cannot allocate memory
error: db3 error(12) from dbenv->close: Cannot allocate memory
error: cannot open Packages index using db3 - Cannot allocate memory (12)
error: cannot open Packages database in /var/lib/rpm
error: db3 error(12) from dbenv->open: Cannot allocate memory
error: db3 error(12) from dbenv->close: Cannot allocate memory
error: cannot open Packages database in /var/lib/rpm
[root@losbdot0 ~]#

Como administro tantos servidores, es inviable ir comprobando uno a uno si la base de datos de RPM está bien o no, así que creé el siguiente script que tengo en el cron de todos los servidores que se encarga de verificar el estado de salud de la base de datos de RPMs y, en caso de que esté mal, la reconstruye:

# crontab -l |grep -i rpm
00 00 01 * * /planific/bin/admsys/checkrpmdb.sh
# cat /planific/bin/admsys/checkrpmdb.sh
#!/bin/sh

PATH=$PATH:/bin:/usr/bin

RPMDBCHECK=$(rpm -qa |wc -l)

if [ "$RPMDBCHECK" = "0" ]
then

   rm -f /var/lib/rpm/__db*
   rpm --rebuilddb
   db_verify /var/lib/rpm/Packages

fi
#

Por ahora, este script lo estoy utilizando en RedHat 6 y 7.

COMPÁRTEME

Deja un comentario