# 解决CentOS在执行yum命令时报错"Error: rpmdb open failed"

> 作者：zning（https://ning.ae） · 发布：2020/07/13 21:15 下午 (UTC+8) · 原文：https://zning.me/15946461550517.html

今天在日常进行CentOS操作的时候，不知为何`yum -y install xxx`命令突然卡死不动，`Ctrl+C`取消执行也无解，遂关闭SSH重新建立连接，然而再次重新执行`yum -y install xxx`命令时却报如下错误：

```shell
...
root@localhost:~>yum -y install xxx
Loaded plugins: fastestmirror, langpacks
Existing lock /var/run/yum.pid: another copy is running as pid 27970.
Another app is currently holding the yum lock; waiting for it to exit...
  The other application is: yum
    Memory :  43 M RSS (362 MB VSZ)
    Started: Mon Jul 13 18:27:38 2020 - 03:46 ago
    State  : Uninterruptible, pid: 27970
Another app is currently holding the yum lock; waiting for it to exit...
  The other application is: yum
    Memory :  43 M RSS (362 MB VSZ)
    Started: Mon Jul 13 18:27:38 2020 - 03:48 ago
    State  : Uninterruptible, pid: 27970
...
```

初步判断应该是进程号为`27970`的那个假死了，即使刚才SSH关闭了也并没有杀掉他，遂干脆利落的执行了`kill -9 27970`直接杀死，后再执行`yum -y install xxx`命令，结果又有报错：

```shell
...
root@localhost:~>yum -y install xxx
error: rpmdb: BDB0113 Thread/process 27970/140274709284672 failed: BDB1507 Thread died in Berkeley DB library
error: db5 error(-30973) from dbenv->failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db5 -  (-30973)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:

Error: rpmdb open failed
...
```

哦豁，凉了，rpmdb本地数据存储文件炸了……不过好在有解决方法。

执行如下命令，清理YUM仓库本地数据存储文件：

```shell
mv /var/lib/rpm/__db* /tmp;
```

执行如下命令，清理yum缓存：

```shell
rpm --rebuilddb;
yum clean all
```

大功告成。

现在细想一下，yum当时有可能是因为网络问题假死，可能再等等就好了，不过毕竟当时有点着急，以后得注意下。
