零、rpm 常用命令
 
1.安装一个包 
 # rpm -ivh 

 2.升级一个包 
 # rpm -Uvh 

 3.卸载一个包 
 # rpm -e 
 
   首先通过  rpm -q <关键字> 可以查询到rpm包的名字, 
   然后 调用 rpm -e <包的名字> 删除特定rpm包。 
   如果遇到依赖,无法删除,使用 rpm -e --nodeps <包的名字> 不检查依赖,直接删除rpm包。 
   如果恰好有多个包叫同样的名字,使用 rpm -e --allmatches --nodeps <包的名字> 删除所有相同名字的包, 并忽略依赖。
 
4.安装参数 
 --force 即使覆盖属于其它包的文件也强迫安装 
 --nodeps 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。 

 5.查询一个包是否被安装 
 # rpm -q < rpm package name> 

 6.得到被安装的包的信息 
 # rpm -qi < rpm package name> 

 7.列出该包中有哪些文件 
 # rpm -ql < rpm package name> 

 8.列出服务器上的一个文件属于哪一个RPM包 
 #rpm -qf 

 9.可综合好几个参数一起用 
 # rpm -qil < rpm package name> 

 10.列出所有被安装的rpm package 
 # rpm -qa 

 11.列出一个未被安装进系统的RPM包文件中包含有哪些文件? 
 # rpm -qilp < rpm package name>

 

一、安装 
 

 命令格式: 

 rpm -i ( or --install) options file1.rpm ... fileN.rpm 

 参数: 

 file1.rpm ... fileN.rpm 将要安装的RPM包的文件名 

 详细选项: 

 -h (or --hash) 安装时输出hash记号 (``#'') 
 --test 只对安装进行测试,并不实际安装。 
 --percent 以百分比的形式输出安装的进度。 
 --excludedocs 不安装软件包中的文档文件 
 --includedocs 安装文档 
 --replacepkgs 强制重新安装已经安装的软件包 
 --replacefiles 替换属于其它软件包的文件 
 --force 忽略软件包及文件的冲突 
 --noscripts 不运行预安装和后安装脚本 
 --prefix 将软件包安装到由 指定的路径下 
 --ignorearch 不校验软件包的结构 
 --ignoreos 不检查软件包运行的操作系统 
 --nodeps 不检查依赖性关系 
 --ftpproxy 用 作为 FTP代理 
 --ftpport 指定FTP的端口号为 

 通用选项 

 -v 显示附加信息 
 -vv 显示调试信息 
 --root 让RPM将指定的路径做为"根目录",这样预安装程序和后安 
 装程序都会安装到这个目录下 
 --rcfile 设置rpmrc文件为 
 --dbpath 设置RPM 资料库存所在的路径为 

 
二、删除 
 

 命令格式: 

 rpm -e ( or --erase) options pkg1 ... pkgN 

 参数 

 pkg1 ... pkgN :要删除的软件包 

 详细选项 

 --test 只执行删除的测试 
 --noscripts 不运行预安装和后安装脚本程序 
 --nodeps 不检查依赖性 

 通用选项 

 -vv 显示调试信息 
 --root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装 
 程序都会安装到这个目录下 
 --rcfile 设置rpmrc文件为 
 
--dbpath 设置RPM 资料库存所在的路径为 
 
 
 
 
 
三、升级 
 

 命令格式 

 rpm -U ( or --upgrade) options file1.rpm ... fileN.rpm 

 参数 

 file1.rpm ... fileN.rpm 软件包的名字 

 详细选项 

 -h (or --hash) 安装时输出hash记号 (``#'') 
 --oldpackage 允许"升级"到一个老版本 
 --test 只进行升级测试 
 --excludedocs 不安装软件包中的文档文件 
 --includedocs 安装文档 
 --replacepkgs 强制重新安装已经安装的软件包 
 --replacefiles 替换属于其它软件包的文件 
 --force 忽略软件包及文件的冲突 
 --percent 以百分比的形式输出安装的进度。 
 --noscripts 不运行预安装和后安装脚本 
 --prefix 将软件包安装到由 指定的路径下 
 --ignorearch 不校验软件包的结构 
 --ignoreos 不检查软件包运行的操作系统 
 --nodeps 不检查依赖性关系 
 --ftpproxy 用 作为 FTP代理 
 --ftpport 指定FTP的端口号为 

 通用选项 

 -v 显示附加信息 
 -vv 显示调试信息 
 --root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下 
 --rcfile 设置rpmrc文件为 
 --dbpath 设置RPM 资料库存所在的路径为 

 
四、查询 
 

 命令格式: 

 rpm -q ( or --query) options 

 参数: 

 pkg1 ... pkgN :查询已安装的软件包 

 详细选项 

 -p (or ``-'') 查询软件包的文件 
 -f 查询属于哪个软件包 
 -a 查询所有安装的软件包 
 --whatprovides 查询提供了 功能的软件包 
 -g 查询属于 组的软件包 
 --whatrequires 查询所有需要 功能的软件包 

 信息选项 

 显示软件包的全部标识 
 -i 显示软件包的概要信息 
 -l 显示软件包中的文件列表 
 -c 显示配置文件列表 
 -d 显示文档文件列表 
 -s 显示软件包中文件列表并显示每个文件的状态 
 --scripts 显示安装、卸载、校验脚本 
 --queryformat (or --qf) 以用户指定的方式显示查询信息 
 --dump 显示每个文件的所有已校验信息 
 --provides 显示软件包提供的功能 
 --requires (or -R) 显示软件包所需的功能 

 通用选项 

 -v 显示附加信息 
 -vv 显示调试信息 
 --root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下 
 --rcfile 设置rpmrc文件为 
 --dbpath 设置RPM 资料库存所在的路径为 

 
五、校验已安装的软件包 
 

 命令格式: 

 rpm -V ( or --verify, or -y) options 

 参数 

 pkg1 ... pkgN 将要校验的软件包名 

 软件包选项 

 -p Verify against package file 
 -f 校验所属的软件包 
 -a Verify 校验所有的软件包 
 -g 校验所有属于组 的软件包 

 详细选项 

 --noscripts 不运行校验脚本 
 --nodeps 不校验依赖性 
 --nofiles 不校验文件属性 

 通用选项 

 -v 显示附加信息 
 -vv 显示调试信息 
 --root 让RPM将指定的路径做为"根目录",这样预安装程序和后安装程序都会安装到这个目录下 
 --rcfile 设置rpmrc文件为 
 --dbpath 设置RPM 资料库存所在的路径为 

 
六、校验软件包中的文件 
 

 语法: 

 rpm -K ( or --checksig) options file1.rpm ... fileN.rpm 

 参数: 

 file1.rpm ... fileN.rpm 软件包的文件名 

 Checksig--详细选项 

 --nopgp 不校验PGP签名 

 通用选项 

 -v 显示附加信息 
 -vv 显示调试信息 
 --rcfile 设置rpmrc文件为 


 
七、其它RPM选项 
 

 --rebuilddb 重建RPM资料库 
 --initdb 创建一个新的RPM资料库 
 --quiet 尽可能的减少输出 
 --help 显示帮助文件 
 
--version 显示RPM的当前版本

八、修复rpm数据库
 
                                        
      有的时候,我们的rpm的数据库会因为某些原因损坏,这样当你执行rpm的相关命令的时候就会报类似下面的错误:

rpmdb: fatal region error detected; run recovery
error: db4 error(-30982) from dbenv->open: DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index

       这样的后果是你将不能使用rpm来添加删除,更新查询你系统的RPM软件包了,其实只要按照下面的步骤做就可以恢复您的RPM数据库而不需要重新安装系统

# cd /var/lib
# mv rpm rpm.old
# mkdir rpm
# rpmdb --initdb
# cp rpm.old/Packages rpm
# rpmdb --rebuilddb

      就可以了
       以上是针对redhat8 和redhat9的做法如果是以前的版本或者其他版本的linux
       请按照下面的步骤进行

# cd /var/lib
# mv rpm rpm.old
# mkdir rpm
# rpm --initdb
# cp rpm.old/Packages rpm
# rpm --rebuilddb  
另一篇
Repair RPM database
      当进行包安装、升级、卸载等操作时,可能损坏RPM DB,这时需要通过--rebuild参数来修复RPM DB,但有时会碰到这样的问题:
[root@tiv125 lib]# rpm -v --rebuilddb
 rpmdb: fatal region error detected; run recovery
 error: db4 error(-30982) from dbenv->open: DB_RUNRECOVERY: Fatal error, run database recovery
 error: cannot open Packages index这时需要先手动删除/var/lib/rpm目录下的 __db.* 文件,比如 __db.001, __db.002, etc.
 然后再运行 rpm -v --rebuilddb 即可。