如何解决 CentOS 中的“Error: rpmdb open failed”错误

今天,我在 CentOS 7 虚拟机中测试 Nginx Web 服务器。 不幸的是,电源在更新过程中消失了。 由于我没有 UPS,我的主机系统立即停机。 几分钟后,电源来了,我再次打开虚拟机并开始升级过程。 当我运行“yum update”命令时,我收到以下错误消息:

error: rpmdb: BDB0113 Thread/process 2196/139984719730496 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

好像百胜坏了。 我无法运行任何 yum 命令。 我以前没有遇到过这个错误,我不知道该怎么办。 因此,我前往 CentOS 论坛希望找到一个合适的解决方案来解决这个问题。 在论坛上搜索了几次后,幸运的是我找到了解决方法。 如果你遇到过这个问题,别无所求,只需执行以下步骤。

首先以 root 用户身份使用命令备份 rpm 数据库:

# mv /var/lib/rpm/__db* /tmp

然后,运行以下命令:

# yum clean all

现在,再次运行更新:

# yum update Loaded plugins: fastestmirror Cleaning repos: base epel extras updates Cleaning up everything Cleaning up list of fastest mirrors [[email protected] ~]# yum update Loaded plugins: fastestmirror base | 3.6 kB 00:00  epel/x86_64/metalink | 5.0 kB 00:00  epel | 4.3 kB 00:00  extras | 3.4 kB 00:00  updates | 3.4 kB 00:00  (1/7): base/7/x86_64/group_gz | 155 kB 00:02  (2/7): epel/x86_64/group_gz | 170 kB 00:04  (3/7): extras/7/x86_64/primary_db | 191 kB 00:12  (4/7): epel/x86_64/updateinfo | 809 kB 00:21  (5/7): base/7/x86_64/primary_db | 5.6 MB 00:26  (6/7): epel/x86_64/primary_db | 4.8 MB 00:46  (7/7): updates/7/x86_64/primary_db | 7.8 MB 00:50  Determining fastest mirrors  * base: mirror.ehost.vn  * epel: repo.ugm.ac.id  * extras: mirror.ehost.vn  * updates: mirror.dhakacom.com Resolving Dependencies --> Running transaction check ---> Package NetworkManager.x86_64 1:1.4.0-19.el7_3 will be updated ---> Package NetworkManager.x86_64 1:1.4.0-20.el7_3 will be an update ---> Package NetworkManager-adsl.x86_64 1:1.4.0-19.el7_3 will be updated [...] --> Finished Dependency Resolution  Dependencies Resolved  ================================================================================  Package Arch Version Repository Size ================================================================================ Installing:  kernel x86_64 3.10.0-514.26.2.el7 updates 37 M  python2-libcomps x86_64 0.1.8-3.el7 epel 46 k  replacing python-libcomps.x86_64 0.1.6-13.el7 Updating:  NetworkManager x86_64 1:1.4.0-20.el7_3 updates 2.5 M  NetworkManager-adsl x86_64 1:1.4.0-20.el7_3 updates 146 k  NetworkManager-bluetooth x86_64 1:1.4.0-20.el7_3 updates 165 k  NetworkManager-glib x86_64 1:1.4.0-20.el7_3 updates 385 k  NetworkManager-libnm x86_64 1:1.4.0-20.el7_3 updates 443 k  NetworkManager-team x86_64 1:1.4.0-20.el7_3 updates 147 k  python-perf x86_64 3.10.0-514.26.2.el7 updates 4.0 M  sudo x86_64 1.8.6p7-23.el7_3 updates 735 k  systemd x86_64 219-30.el7_3.9 updates 5.2 M  systemd-libs x86_64 219-30.el7_3.9 updates 369 k  systemd-sysv x86_64 219-30.el7_3.9 updates 64 k  tuned noarch 2.7.1-3.el7_3.2 updates 210 k  xfsprogs x86_64 4.5.0-10.el7_3 updates 895 k Removing:  kernel x86_64 3.10.0-123.el7 @anaconda 127 M  Transaction Summary ================================================================================ Install 2 Packages Upgrade 46 Packages Remove 1 Package  Total download size: 84 M Is this ok [y/d/N]: y

我打字 继续更新。 瞧! 一切都按预期工作。

最后,我使用命令清理了备份:

# rm -i /tmp/__db*

而且,这就是现在的全部。 希望这可以帮助。

相关阅读:

  • [Solved] -“错误:rpmdbNextIterator:跳过”在 Fedora Linux

CentOSError: rpmdb open failedLinuxRPM疑难解答YUM