RPM程序如何使用,相信会linux的朋友一定会使用。当你查询某个软件包的信息时,你可知道这些信息从何而来呢?这就要使用到RPM数据库了,以下介绍了rpm数据库以及如何备份与恢复RPM数据库。当安装linux完成的时候,系统会在/var/lib/rpm目录下面创建rpm的数据库文件,如图所示:
这些文件都很重要,如果不小心丢失了,重建了rpm数据库之后,有些信息还是查询不到的。官方针对rpm数据库的重要性做了如下描述:The RPM database is really a number of Berkeley DB databases, each designed for a different type of query.If something goes wrong with your RPM database, you can first try to rebuild it. If that fails, you may need to initialize a new database, although that is generally not needed. First and foremost, however, you should back up this database.
一、RPM数据库的几个重要文件的具体含义:
__db.*这些是rpm数据库文件,这些文件可以使用rpm、rpmdb命令进行重建。
Packages文件里面包含了每个软件包的信息,如果这个文件丢失了,使用rpm –qf/qi这些命令组合查询某个程序属于哪个软件包时会没有输出信息的,具体看下例:
正常情况下,查询rpm程序属于哪个软件包:
查看某个软件包信息:
当Packages文件丢失后:
当你查询了以后,系统自动会创建一个Packages文件,这个文件是空文件:
看到了吧,这个Packages文件是非常重要的。
二、备份RPM数据库:
针对RPM数据库的备份,RedHat提供了几个命令,位于/usr/lib/rpm/目录下:
这些命令都是跟Berkeley DB结合在一起的,由于这个软件不会使用,所以不再介绍这几个命令了。以下使用tar命令进行备份:
三、恢复RPM数据库:
1、移除Locks信息:
使用lsof检查:
2、恢复:
之前已经备份过RPM数据库了,这里直接将RPM数据库文件删除进行恢复操作:
删完之后,然后检查Packages文家的完整性:
接着使用/usr/lib/rpm/rpmdb_dump命令dump和/usr/lib/rpm/rpmdb_load导入数据库,最后再此检查下Packages文件的完整性:
最后重建rpm数据库:
四、初始化RPM数据库:
假如RPM数据库文件丢失了,可以使用rpmdb初始化RPM数据库,执行初始化完成后,虽然产生了__db.*以及Packages文件,但是这个rpm数据库是空的,里面没有任何rpm软件包信息。当查询某个软件包信息时查询不到任何信息。
尽管这样可行,但是还是要做好RPM数据库的备份工作,以防万一!
参考文献: