:::: MENU ::::

rpmdbの修復

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が問題なく動作すれば完了!

[`evernote` not found]


So, what do you think ?