18 09 2013
Yum: DB_RUNRECOVERY: Fatal error, run database recovery
So I was trying to get something installed with puppet and I encountered this lovely error in the logs;
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: Execution of '/usr/bin/yum -d 0 -e 0 -y install screen' returned 1: rpmdb: PANIC: fatal region error detected; run recovery
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: error: db4 error(-30977) from dbenv->open: DB_RUNRECOVERY: Fatal error, run database recovery
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: error: cannot open Packages index using db3 - (-30977)
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: error: cannot open Packages database in /var/lib/rpm
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: Traceback (most recent call last):
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: File "/usr/bin/yum", line 29, in ?
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: yummain.user_main(sys.argv[1:], exit_code=True)
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: File "/usr/share/yum-cli/yummain.py", line 309, in user_main
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: errcode = main(args)
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: File "/usr/share/yum-cli/yummain.py", line 157, in main
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: base.getOptionsConfig(args)
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: File "/usr/share/yum-cli/cli.py", line 187, in getOptionsConfig
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: self.conf
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 665, in <lambda>
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: conf = property(fget=lambda self: self._getConfig(),
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 240, in _getConfig
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: self._conf = config.readMainConfig(startupconf)
Sep 17 23:50:27 xxxxxx puppet-agent[32222]: File "/usr/lib/python2.4/site-packages/yum/config.py", line 805, in readMainConfig
Sep 17 23:50:28 xxxxxx puppet-agent[32222]: yumvars['releasever'] = _getsysver(startupconf.installroot, startupconf.distroverpkg)
Sep 17 23:50:28 xxxxxx puppet-agent[32222]: File "/usr/lib/python2.4/site-packages/yum/config.py", line 878, in _getsysver
Sep 17 23:50:28 xxxxxx puppet-agent[32222]: idx = ts.dbMatch('provides', distroverpkg)
Sep 17 23:50:28 xxxxxx puppet-agent[32222]: TypeError: rpmdb open failed
Turns out the fix is super simple! You just need to run the following commands:
cd /var/lib/rpm/
rm -f __db*
rpm -–rebuilddb
yum clean all
Then you will be good to go.
Setting up a VDS using a stacklet image. Puppet: Failed to apply catalog: Could not find dependent Service[nrpe] for file.