CentOS上で、yumのデータベースが壊れたときの対処法
エラーの症状
# yum update Loaded plugins: downloadonly, fastestmirror rpmdb: PANIC: fatal region error detected; run recovery エラー: db4 エラー (-30977) (dbenv->open において): DB_RUNRECOVERY: Fatal error, run database recove ry エラー: Packages インデックスを db3 でオープンできません - (-30977) エラー: /var/lib/rpm にある Package データベースをオープンできません。 Traceback (most recent call last): File "/usr/bin/yum", line 29, in ? yummain.user_main(sys.argv[1:], exit_code=True) File "/usr/share/yum-cli/yummain.py", line 309, in user_main errcode = main(args) File "/usr/share/yum-cli/yummain.py", line 157, in main base.getOptionsConfig(args) File "/usr/share/yum-cli/cli.py", line 187, in getOptionsConfig self.conf File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 665, in conf = property(fget=lambda self: self._getConfig(), File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 240, in _getConf ig self._conf = config.readMainConfig(startupconf) File "/usr/lib/python2.4/site-packages/yum/config.py", line 804, in readMainCo nfig yumvars['releasever'] = _getsysver(startupconf.installroot, startupconf.dist roverpkg) File "/usr/lib/python2.4/site-packages/yum/config.py", line 877, in _getsysver idx = ts.dbMatch('provides', distroverpkg) TypeError: rpmdb open failed
DBを削除
# cd /var/lib/rpm/ # ls Basenames Group Providename Requir eversion __db.001 Conflictname Installtid Provideversion Sha1header __db.002 Dirnames Name Pubkeys Sigmd5 __db.003 Filemd5s Packages Requirename Triggernam e [root@icrf-analysis rpm]# rm __* rm: remove 通常ファイル `__db.001'? y rm: remove 通常ファイル `__db.002'? y rm: remove 通常ファイル `__db.003'? y
DB再構築
# rpm --rebuilddb
これで、yumが問題なく動作すれば完了!