yumはrpmを利用してインストールパッケージの依存関係を管理しています。
yum コマンドを実行した際に下記のようなエラーが発生し失敗する場合があります。
$sudo yum install epel-release
$sudo yum install epel-release Loaded plugins: fastestmirror, priorities, update-motd amzn-main | 2.1 kB 00:00:00 amzn-updates | 3.8 kB 00:00:00 Loading mirror speeds from cached hostfile * epel: d2lzkl7pfhq30w.cloudfront.net * epel-debuginfo: d2lzkl7pfhq30w.cloudfront.net * epel-source: d2lzkl7pfhq30w.cloudfront.net 1067 packages excluded due to repository priority protections error: rpmdb: Thread/process 28618/140489055352640 failed: Thread died in Berkeley DB library error: db4 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery error: cannot open Packages index using db4 - (-30974) error: cannot open Packages database in /var/lib/rpm Traceback (most recent call last): File "/usr/bin/yum", line 29, in <module> yummain.user_main(sys.argv[1:], exit_code=True) File "/usr/share/yum-cli/yummain.py", line 365, in user_main errcode = main(args) File "/usr/share/yum-cli/yummain.py", line 174, in main result, resultmsgs = base.doCommands() File "/usr/share/yum-cli/cli.py", line 574, in doCommands return self.yum_cli_commands[self.basecmd].doCommand(self, self.basecmd, self.extcmds) File "/usr/share/yum-cli/yumcommands.py", line 437, in doCommand return base.installPkgs(extcmds, basecmd=basecmd) File "/usr/share/yum-cli/cli.py", line 974, in installPkgs txmbrs = self.install(pattern=arg) File "/usr/lib/python2.7/dist-packages/yum/__init__.py", line 4920, in install ipkgs = self.rpmdb.searchNames([po.name]) File "/usr/lib/python2.7/dist-packages/yum/rpmsack.py", line 1285, in searchNames returnList.extend(self._search(name=name)) File "/usr/lib/python2.7/dist-packages/yum/rpmsack.py", line 1350, in _search for hdr, idx in mi: File "/usr/lib/python2.7/dist-packages/yum/rpmsack.py", line 1304, in _get_packages mi = ts.dbMatch(*args, **kwds) File "/usr/lib/python2.7/dist-packages/rpmUtils/transaction.py", line 58, in dbMatch mi = self.ts.dbMatch(*args, **kwds) _rpm.error: rpmdb open failed
rpmdbの修正方法
rpmコマンドのリビルドオプションでrpmdbを修復します。
$sudo rpm --rebuilddb
戻り値がなければ成功です。
$ yum install epel-release Loaded plugins: fastestmirror, priorities, update-motd Loading mirror speeds from cached hostfile * epel: d2lzkl7pfhq30w.cloudfront.net * epel-debuginfo: d2lzkl7pfhq30w.cloudfront.net * epel-source: d2lzkl7pfhq30w.cloudfront.net 1067 packages excluded due to repository priority protections Package epel-release-6-8.9.amzn1.noarch already installed and latest version Nothing to do