一、简述
RPM Package Manager(原Red Hat Package Manager)即软件包管理器,是一种用在软件包的打包和安装的工具,其通过将源代码给予特定平台系统编译为可执行文件,并且保存了编译过程中的依赖关系,从而来简化开源软件包的安装和管理。
RPM软件的管理主要是软件包的安装、卸载、升级、查询、校验、数据库维护等。
二、使用
1.安装
A)命令
rpm {-i|--install} [install-options] [package_file]+
-i, --install 安装软件包
-h, --hash 软件包安装的时候列出哈希标记 (和-v 一起使用效果更好)
-v,--verbose 提供更多的详细信息输出
-vv 打印出调试信息
# 常用格式
rpm -ivh package_file ...
install-options
--test 不真正安装,只是判断下是否能安装
--nodeps 不验证软件包依赖
--replacepkgs 如果软件包已经有了,重新安装软件包
--nosignature 不验证软件包签名,不检查来源的合法性
--nodigest 不校验软件包的摘要,不检查包的完整性
--noscripts 不执行软件包脚本
%pre:安装前脚本,--nopre
%post:安装后脚本,--nopost
%preun:卸载前脚本,--nopreun
%postun:卸载后脚本,--nopostun
B)案例
[root@wybaron_host1015 ~]# ll
...
-rw-r--r-- 1 root root 81428 3月 30 2014 pptpd-1.4.0-2.el7.x86_64.rpm
...
[root@wybaron_host1015 ~]# rpm -ivh --test pptpd-1.4.0-2.el7.x86_64.rpm
警告:pptpd-1.4.0-2.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 352c64e5: NOKEY
准备中... ################################# [100%]
软件包 pptpd-1.4.0-2.el7.x86_64 已经安装
[root@wybaron_host1015 ~]# rpm -ivh --test --nosignature pptpd-1.4.0-2.el7.x86_64.rpm
准备中... ################################# [100%]
软件包 pptpd-1.4.0-2.el7.x86_64 已经安装
# 安装操作
[root@wybaron_host1015 ~]# rpm -ivh pptpd-1.4.0-2.el7.x86_64.rpm
警告:pptpd-1.4.0-2.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 352c64e5: NOKEY
准备中... ################################# [100%]
软件包 pptpd-1.4.0-2.el7.x86_64 已经安装
2.升级
命令
rpm {-U|--upgrade} [install-options] <package_file>+
rpm {-F|--freshen} [install-options] <package_file>+
-U|--upgrade 安装有旧版本程序包就进行“升级”,如果未安装旧版本程序包,则执行“安装”操作
-F|--freshen 安装有旧版本程序包就进行“升级”,如果没有旧版本程序包,则不执行“安装”操作
# 常用格式
rpm -Uvh <package_file>+
rpm -Fvh <package_file>+
# 其它常用选项
-froce 强行升级
-oldpackage 降级
注意:
1)不要对内核做升级操作,linux支持多版本内核并存,需要使用新版本内核时,直接安装新版本内核即可。
2)如果程序包的配置文件安装后曾被修改,升级时,新版本所提供的同一个配置文件并不会直接覆盖老版本的配置文件,而是将新版本的程序安装后的配置文件进行重命名(FILE_name.rpmnew)后保留。
3.查询
A)命令
rpm {-q|--query} [select-options] [query-options]
[select-options]
-a,--all 查询所有安装的包
-f 查看指定的文件由哪个程序包安装生成
-p <package_file> 针对尚未安装的程序包文件做查询操作
--whatprovides <virtual> 查询所有提供<virtual>功能的包
--whatrequires <capability> 查询所有需要<capability>才能提供适当功能的包(<capability>被哪个包所依赖)
[query-options]
--changelog 查询指定rpm包的变更记录,变更信息
-d,--docfiles 只列出程序的文档文件(隐含-l选项)
-c,--configfiles 只列出程序的配置文件(隐含-l选项)
-i 展示rpm包的信息,包括名字,版本,以及描述等
-l,--list 查看指定程序包安装过后生成的所有文件
--scripts 如果有的话,就列出该包里作为安装或卸载过程一部分的特殊shell脚本(安装前后、卸载前后脚本)
-R, --requires 列出制定程序包所依赖的别的包
--provides 列出指定rpm包所提供的功能
# 常用格式
~]# rpm -qi PACKAGE
~]# rpm -qf FILE
~]# rpm -qc PACKAGE
~]# rpm -ql PACKAGE
~]# rpm -qd PACKAGE
~]# rpm -qpi PACKAGE_FILE
~]# rpm -qpl PACKAGE_FILE
~]# rpm -qa PACKAGE
...
B)案例
[root@wybaron_host1015 ~]# rpm -qa | grep pptpd
pptpd-1.4.0-2.el7.x86_64
[root@wybaron_host1015 ~]# rpm -qc pptpd
/etc/ppp/options.pptpd
/etc/pptpd.conf
/etc/sysconfig/pptpd
[root@wybaron_host1015 ~]# rpm -ql pptpd
/etc/ppp/options.pptpd
/etc/pptpd.conf
/etc/sysconfig/pptpd
/usr/bin/vpnstats.pl
/usr/bin/vpnuser
/usr/lib/systemd/system/pptpd.service
...
4.卸载
命令
rpm {-e|--erase} [select-options] <package_name>+
[select-options]
--allmatches 将移去与<package_name>相匹配的所有版本的包。正常情况下,如果<package_name>与多个包相匹配,就会给出错误信息。
--noscripts 不执行安装前或安装后脚本
--notriggers 不执行由移去该包所激发的脚本
--nodeps 卸载前不检查依赖性
--test 不真正卸载任何东西,只是遍历该动作。常配合-vv选项使用
5.校验
命令
rpm {-V|--verify} [verifyoptions] [package]+
[verifyoptions]
--nofiles 核实时忽略缺失文件
--nomd5 核实时忽略MD5校验错误
--nopgp 核实时忽略PGP校验错误
--nofiles 核实时忽略缺失文件
# 执行后输出的格式是一个八个字符的字符串,和一个可能有的"c",指明后面是一个配置文件,以及后面的文件名。八个字符中的每一个都代表着一个文件属性与保存在RPM的数据库中的属性纪录值的比较结果
单个的"."(句号)表明检查通过。下列字符代表特定检查的失败:
5 文件的MD5校验和发生变化
S 文件大小发生变化
L 文件的链接发生变化
T 文件最后修改时间发生改变
D 设备的主次设备号发生变化
U 文件属主发生变化
G 文件属组发生变化
M 模式(包括许可和文件类型),常用于文件权限发生变化
6.数据库维护
命令
rpm {--initdb|--rebuilddb}
--initdb 初始化,如果之前不存在数据库,则创建;否则,不执行任何操作
--rebuilddb 无论之前是否存在,直接重新创建数据库
三、补充
验正相关
完整性验正:SHA256
来源合法性验正:RSA
公钥加密
对称加密:加密、解密使用同一秘钥
非对称加密:密钥是成对的
public key :公钥,公开给所有人
secret key :私钥,不能公开