rpm 数据库损坏了?
麒麟上 rpm 查询报错 / 卡死:BDB 数据库损坏(多为异常掉电导致)。给出重建数据库与验证的步骤,重建前注意先备份。
简短答案
rpm -qa 报错或卡死九成是 rpm 数据库损坏(多为异常掉电、强制关机导致 BDB 数据库不一致)。处理路径是重建数据库,重建前先停包管理相关进程、保留旧库备查。
| 现象 | 原因 | 处理 |
|---|---|---|
rpm -qa 报 BDB DB_PAGEIN 错 |
BDB 库损坏 | 重建数据库 |
rpm -qa 卡死 |
库锁没释放 | 杀掉相关进程再重建 |
| 重建后还报错 | 磁盘坏道 / 库本身坏 | 换盘或重装 |
怎么排查
# 1. 看数据库报错
rpm -qa 2>&1 | head
# 2. 看是否有残留进程
pgrep -a rpm
# 3. 停包管理相关服务(示例)
sudo systemctl stop yum-updatesd
# 4. 重建数据库(路径以系统版本为准)
sudo rm -rf /var/lib/rpm/__db*
sudo rpm --rebuilddb
# 5. 验证
rpm -qa | head
- 重建前保留旧
__db*,万一重建后有问题可回滚。 - 数据库重建后包管理行为不变,无需重装应用。
- 服务器 / 桌面版数据库路径一致,见 麒麟 V11 服务器版、麒麟 V11 桌面版 发行说明。
操作小结
- 先留旧库再重建。
- 重建后
rpm -qa验证。 - 反复损坏查磁盘健康。