rpm 全称RPM Package Manager
1.rpm包的查询
常用的有:
rpm -qa # 列出所有已安装的rpm包
rpm -qi zsh # 查询zsh的具体信息
rpm -qf /bin/ls# 查询/bin/ls由哪个软件包释放的
rpm -qd zsh # 查询zsh提供哪些帮助文档
rpm -qc zsh # 查询zsh的配置文件地址
rpm -ql zsh # 查询zsh安装过程中释放的文件路径
不太常用的有:
rpm -q --changelog zsh # 查询zsh软件包的变更记录
rpm -q --requires zsh # 查询zsh依赖的其他软件包
rpm -q --scripts zsh # 查询zsh 包含的脚本【安装、卸载时候会调用这些脚本】
另外,加上 -p参数适用于尚未安装的软件包的信息查询,如:
【注意加上-p参数后,后面接的是必须是完整的包名称】
rpm -qpi httpd-2.2.15-39.el6.centos.x86_64.rpm # 查询httpd软件包的详细信息
同理,-qpc,-qpl,-qpd ,-qp --changelog 的用法类似,都是用于查询尚未安装的软件包各种情况,可以参考上面。
2.rpm包的安装
rpm -ivh xxx.rpm 安装xxx软件包
rpm -Uvh xxx.rpm 升级【存在则升级,不存在则本次安装】
rpm -Fvh xxx.rpm 升级【存在则升级,不存在则本次也不安装】
rpm -ivh --replacepkgs xxx.rpm 覆盖安装
rpm -ivh --oldpackage xxx.rpm 降级安装rpm包
安装过程中还有几个可选参数,
--test
如rpm -ivh --test xxx.rpm 表示仅测试软件包的安装情况,不实际安装
安装过程中,如果我们没有事先导入公钥,安装时候会提示缺少校验或签名。可以加上下面的选项:
--nodigest # 读取时不校验打包或头部校验【如:rpm -ivh --nodigest xxx.rpm】
--nosignature # 读取时不校验打包或头部签名
3.rpm包的卸载
rpm -e xxx # 注意这里xxx不需要写具体的xxx.rpm。【卸载httpd.2.2.19.rpm,只要写rpm -e httpd即可】
卸载过程中还有几个可选参数,
--nodeps
如rpm -ivh --nodeps httpd.2.1.3-12.rpm 表示忽略依赖关系,不建议这样使用。
--test
如rpm -ivh --test xxx.rpm 表示仅测试软件包的安装情况,不实际卸载
--noscripts 表示不执行rpm安装过程的脚本,不建议使用该参数。
4.rpm包的校验
校验软件包,是将已安装的文件的信息,与从软件包中获取的保存在 rpm 数据库中的有关文件的元数据进行比较。校验比较的内容有每个文件的大小,MD5 校验和,许可,类型,属主。任何不对的地方都回显示出来。
rpm -V zsh # 校验zsh包【zsh已安装情况下】
rpm -Va # 校验所有已安装的软件包的文件【md5】
rpm -Vf /bin/ls# 校验/bin/ls文件【md5信息】
校验给出提示信息有如下几种:
c %config 配置文件
d %doc 文档
g %ghost 占位文档 (就是说,文件内容不包含在软件包有效内容里面)
l %license 许可文件
r %readme 说明文件
S file Size 大小不一致
M Mode 模式不一致 (包括许可和文件类型)
5 MD5 sum 校验和不一致
D Device 主从设备号不匹配
L readLink(2) 路径不匹配
U User 属主不一致
G Group 组属主不一致
T mTime 时间不一致
例如下图,对系统内已安装的所有包文件进行校验:
rpm包来源合法性校验
一般用于对新下载好的软件包进行校验MD5值使用
rpm --import /PATH/FROM/GPG-PUBKEY-FILE
例如:rpm -K zsh-4.3.10-7.el6.x86_64.rpm
提示如下,zsh-4.3.10-7.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
5.rpm数据库重建
rpm --initdb # 初始化rpm数据库
rpm --rebuilddb # 重新生成rpm数据库
可能还有不完善的地方,待补充。