RPM包是Redhat和许多版本的linux(SUSE,红旗,Turbo)采用的一种软件包,或者说是一种软件包管理的方法。全称是:Redhat package mangement,是红帽子的发明。
出现问题
当我们配置完本地yum后使用yum时
[root@master ~]# yum clean
error: rpmdb: BDB0113 Thread/process 4989/139909188998976 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
通常情况下,这个系统非常的稳定和强健,但是个别的操作,例如安装意外中断,使用了冲突的包来源,这个简单的说,就是不同的人打得包,往往也有不同,依赖关系不一样。
解决方案
1、根据上面的提示我们进入到/var/lib/rpm的目录下
error: cannot open Packages database in /var/lib/rpm
[root@master ~]# cd /var/lib/rpm
2、删除已经损坏的数据库重新构建就好了
当然,重新建立了rpm库里的记录,不会安装和删除任何的包。所以放心使用吧。
删除后重新构建
[root@master rpm]# rm -rf __db.001
[root@master rpm]# rpm --rebuilddb
另外
yum clean all
会删除之前的缓存,例如已经进行到一半的更新,临时文件都会被去掉,只好从头来过了。
扩展
问题
ERROR:无法为立即文档创建临时文件: 设备上没有空间
故障发生原因
测试环境,之前用该机器做过docker-compose,后来有需要用到该机器上的docker环境,需要将旧的docker容器全部删除,由于之前启动是使用docker-compose启动的,正常手段也应该使用该工具关掉容器。但是我用的是docker rm --force 命令,可能不知道系统哪根筋不对了吧
顺便我这里跟大家扩展下,这里是因为我重新构建数据时出现这个问题
之后我不管使用什么命令都是这个问题
解决方案
因为使用docker-compose的时候生成了很多的临时文件,所以我们清除/tmp目录下的文件即可
[root@master usr]# rm -rf /tmp/*
[root@master usr]# ls .
bin etc games include lib lib64 libexec local sbin share src tmp