但并非所有的用户 *** 作都“按常理出牌”,例如 RPM 包在升级过程被强行退出、RPM 包安装意外中断等误 *** 作,都可能使 RPM 数据库出现故障,后果是当安装、删除、査询软件包时,请求无法执行,如图 1 所示:
图 1 RPM数据库出现故障
这时就需要重建 RPM 数据库,执行如下 2 步 *** 作:
删除当前系统中已损坏的RPM数据库,执行如下命令:
[root@localhost ~]# rm -f /var/lib/rpm/_db.*
重建 RPM 数据库,执行如下命令:[root@localhost -]# rpm -rebuilddb
这一步需花费一定时间才能完成。除了用户误 *** 作导致 RPM 数据库崩溃,有些黑客入侵系统后,为避免系统管理员通过 RPM 包校验功能检测出问题,会更改 RPM 数据库。
理论上,系统一旦被黑客“光顾”,则做的任何 *** 作都将不可信。
对于这种情况,我们可以按照以下步骤对文件进行检测:对于要校验的文件或命令,找到它属于哪个软件包,如下命令所示:
[root@localhost ~]# rpm -qf/etc/rc.d/init.d/smb
samba-3.0.23c-2
[root@localhost ~]# rpm -ql -dump samba|grep /etc/rc.d/init.d/smb
/etc/rc.d/init.d/smb 2087 1157165946 b1c26e5292157a83cadabe851bf9b2f9 0100755 root root 1 0 0X
[root@localhost ~]# ls -l /etc/rc.d/init.d/smb
-rwxr-xr-x 1 root root 2087 Sep 2 2006/etc/rc.d/init.d/smb
[root@localhost ~]# md5sum /etc/rc.d/init.d/smb
b1c26e5292157a83cadabe851bf9b2f9 /etc/rc.d/init.d/smb
注意,如果确信 RPM 数据库遭到了修改,就要基于从光盘或者其他值得信赖的来源处获得的 Samba RPM 文件进行检査。
[root@localhost~]# rpm -ql --dump -p /mnt/cdrom/Fedora/RPMS/samba-3.0.23c-2.i386.rpm | grep /etc/rc.d/init.d/smb
warning: samba-3.0.23c-2.i386.rpm: header V3 DSA signature: NOKEY,key ID 412a&62
/etc/rc.d/init.d/smb 2087 1157165946 b1c26e5292157a83cadabe851 bf9b2f9 0100755 root root 1 0 0 X
以上是内存溢出为你收集整理的Linux重建RPM数据库(RPM数据库损坏的解决方案)全部内容,希望文章能够帮你解决Linux重建RPM数据库(RPM数据库损坏的解决方案)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)