偶尔yum的缓存会被破坏,我们会看到如下错误:
error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error,run database recovery error: cannot open Packages index using db3 - (-30974) error: cannot open Packages database in /var/lib/rpm
解决方法是rm -f / var / lib / rpm / __ db *然后下一个“yum”命令重新生成数据.
我的问题是:可能导致这种情况的原因是什么?是否有一些忽略锁定的常见任务或导致此问题的其他问题?
我们有数百台CentOS机器,没有模式可以看到这个问题.它可能是一个“百万分之一”的问题,经常出现大规模的问题.
注意:我意识到这是一个非常“开放式”的问题,但如果答案找到原因,我会回过头来将问题转化为与特定问题直接相关的更具规范性的问题.
在一般情况下,当更新rpm(一个Berkeley DB键值存储)并且非常敏感时,rpm(或yum)崩溃时会发生这种情况.发生此类崩溃时,rpmdb将处于不一致状态,并发生此错误. / var / lib / rpm中的所有其他文件包含相同的信息,但格式效率较低,因此可以轻松地重建数据库.
原文链接:https://www.f2er.com/centos/373940.html您可能在较旧的CentOS系统上看到的两个值得注意的错误可能导致这种情况. The big one,在更改日志中出现的“共享mmap’ed页面回写中令人讨厌和微妙的竞争”,是quietly fixed in a kernel update in 2007.但是这一个presented itself slightly differently比你的报告更多.
one you might see from 2009发生在PackageKit将在不合时宜的时间杀死yum,以及was also fixed.但这更有可能影响具有GUI的桌面系统或服务器.
所有这些错误都早于EL 6,你几乎不会在EL 6或7上看到这种错误,如果你的EL 5系统是最新的,你也不应该看到它. (我不知道EL 4.如果你有一个,在它传播之前杀掉它.)也就是说,任何导致yum或rpm在使用rpmdb时死亡的东西都可能导致它.这包括你最有可能看到的东西,随机宇宙射线翻转位,或者某人因杀死-9而过分热心.
在RHEL 7中,yum在实际事务运行期间捕获更多信号,您将看到消息(禁止关闭).这应该有助于防止大多数情况下某人或某事中断事务并导致此问题.