RPM程序如何使用,相信会linux的朋友一定会使用。当你查询某个软件包的信息时,你可知道这些信息从何而来呢?这就要使用到RPM数据库了,以下介绍了rpm数据库以及如何备份与恢复RPM数据库。当安装linux完成的时候,系统会在/var/lib/rpm目录下面创建rpm的数据库文件,如图所示:

Red Hat RPM Database  Backup And Recovery Guide_数据库

Red Hat RPM Database  Backup And Recovery Guide_target_02

这些文件都很重要,如果不小心丢失了,重建了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程序属于哪个软件包:

Red Hat RPM Database  Backup And Recovery Guide_linux_03

查看某个软件包信息:

Red Hat RPM Database  Backup And Recovery Guide_数据库_04

当Packages文件丢失后:

Red Hat RPM Database  Backup And Recovery Guide_软件包_05

Red Hat RPM Database  Backup And Recovery Guide_blank_06

当你查询了以后,系统自动会创建一个Packages文件,这个文件是空文件:

  Red Hat RPM Database  Backup And Recovery Guide_target_07

看到了吧,这个Packages文件是非常重要的。

二、备份RPM数据库:

针对RPM数据库的备份,RedHat提供了几个命令,位于/usr/lib/rpm/目录下:

Red Hat RPM Database  Backup And Recovery Guide_数据库_08

这些命令都是跟Berkeley DB结合在一起的,由于这个软件不会使用,所以不再介绍这几个命令了。以下使用tar命令进行备份:

Red Hat RPM Database  Backup And Recovery Guide_数据库_09

三、恢复RPM数据库:

1、移除Locks信息:

Red Hat RPM Database  Backup And Recovery Guide_软件包_10

使用lsof检查:

Red Hat RPM Database  Backup And Recovery Guide_数据库_11

2、恢复:

之前已经备份过RPM数据库了,这里直接将RPM数据库文件删除进行恢复操作:

Red Hat RPM Database  Backup And Recovery Guide_target_12

删完之后,然后检查Packages文家的完整性:

Red Hat RPM Database  Backup And Recovery Guide_blank_13

接着使用/usr/lib/rpm/rpmdb_dump命令dump和/usr/lib/rpm/rpmdb_load导入数据库,最后再此检查下Packages文件的完整性:

Red Hat RPM Database  Backup And Recovery Guide_软件包_14

最后重建rpm数据库:

Red Hat RPM Database  Backup And Recovery Guide_软件包_15

Red Hat RPM Database  Backup And Recovery Guide_blank_16

四、初始化RPM数据库:

假如RPM数据库文件丢失了,可以使用rpmdb初始化RPM数据库,执行初始化完成后,虽然产生了__db.*以及Packages文件,但是这个rpm数据库是空的,里面没有任何rpm软件包信息。当查询某个软件包信息时查询不到任何信息。

Red Hat RPM Database  Backup And Recovery Guide_target_17

尽管这样可行,但是还是要做好RPM数据库的备份工作,以防万一!

参考文献:

         RPM Guide