linux7 rpmdb 修复,RPM DB 修复

RPM DB 修复

2016-12-01 Thursday

Linux, DevOps, SoftWare

在一些 Linux 的发行版本中,例如 CentOS、SUSE 中,会采用 RPM 来管理软件包,不过在使用过程中,经常会出现由于各种各样的原因导致 RPM DB 被损坏。

这里简单介绍一下其修复方法。

简介

RPM 会使用自己的 DB 保存元数据,经常在宕机、kill -9 时会损坏 DB ,那么就可能会导致已经安装的包丢失、更新 RPM 被 hang 住、查询包信息失败,失败信息一般如下。

rpmdb: /var/lib/rpm/Packages: unexpected file type or format

error: cannot open Packages index using db3 - Invalid argument (22)

rpmdb: Thread/process 14357/139885775857408 failed: Thread died in Berkeley DB library

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

rpmdb: Thread/process 14357/139885775857408 failed: Thread died in Berkeley DB library

error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery

error: cannot open Packages database in /var/lib/rpm

修复过程

接下来需要着手进行修复。

1. 首先确保没有RPM进程

# ps -ef | grep -i rpm

在修复时,如果存在其它进程同时在使用,那么可能会同样导致失败,如果有必要可以通过 kill -9 关闭进程。

2. 删除锁文件

# rm -rf /var/lib/rpm/__db*

# /usr/lib/rpm/rpmdb_verify Packages

删除存留的锁文件,并校验 DB 是否有损坏,此时就可以检查 RPM 相关的命令是否可以执行。

3. 备份 RPM 数据库

# cd /var/lib

# mkdir rpm-backup

# rsync -av ./rpm/. ./rpm-backup/.

4. 重新构建 RPM 数据库

# rpm -vv --rebuilddb > /tmp/rpmrebuilddb.log 2>&1

5. 最后重新校验

# /usr/lib/rpm/rpmdb_verify /var/lib/rpm/Packages

参考

如果喜欢这里的文章,而且又不差钱的话,欢迎打赏个早餐 ^_^

支付宝打赏

微信打赏

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值