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.
Mi pasión por la tecnología me lleva constantemente a explorar las últimas tendencias y aplicaciones, buscando siempre formas de implementar soluciones innovadoras que mejoren la eficiencia. En puerto53.com comparto contenido valioso para ayudar a otros profesionales y entusiastas de la informática a navegar y dominar el complejo mundo de la tecnología. Mi especialidad en Linux RedHat.
Más sobre mí en el este enlace,