YUM 和 RPM 错误:rpmdbNextIterator:跳过 h#

Omi*_*uin 1 yum oracle-linux

在 RHEL 5 中安装任何软件包时,我收到此错误

error: rpmdbNextIterator: skipping h#     150 region trailer: BAD, tag 1713401957 type 1919692085 offset -775433784 count 761427303
Run Code Online (Sandbox Code Playgroud)

我使用“yum clean all”清理元数据,但仍然是同样的错误

Rob*_*spu 7

当在 rpm 数据库中查询已安装导致元标记混乱的软件包时出现问题的后续软件包时会发生这种情况:

rpm --rebuilddb
Run Code Online (Sandbox Code Playgroud)

当你重建rpm数据库包时,它应该都恢复正常了。在某些情况下,问题仍然存在,然后您需要删除旧的元数据并重新构建

mkdir /var/lib/rpm/old
mv /var/lib/rpm/Pubkeys /var/lib/rpm/old/
rpm --rebuilddb
Run Code Online (Sandbox Code Playgroud)

有时,在我的情况下,抛出错误不是因为某些目录无法删除的错误。

$ sudo rpmdb --rebuilddb -v
error: could not delete old database at /var/lib/rpmold.17138

$ sudo rm -rf /var/lib/rpmold.17138

$ sudo rpmdb --rebuilddb -v

$ sudo dnf update --refresh
determining the fastest mirror (2 hosts).. done.
RPM Fusion for Fedora 28 - Free - Updates                                                                                                                        412 kB/s | 369 kB     00:00    
RPM Fusion for Fedora 28 - Nonfree - Updates                                                                                                                      35 kB/s |  84 kB     00:02    
Last metadata expiration check: 0:00:00 ago on Mon 27 Aug 2018 09:08:56 AM +08.
Dependencies resolved.
Nothing to do.
Complete!
Run Code Online (Sandbox Code Playgroud)

上面的输出(带有 -v,详细参数)显示我有权限问题,无法/var/lib/rpmold.17138从系统中删除目录。只需手动删除,重建 rpm 数据库就可以了。