RPM是RHEL的一款后端软件包管理工具;全称为RedHat Package Manage,由RedHat公司开发,主要作为RehHat Linux软件包的管理机制之一,但并未用作商业用途,而是遵循GPL协议,其设计理念是开放的;现包括SUSE、Openlinux等发行版都采用,是非常强大的软件管理工具。
RPM是以一种数据库记录的方式来将需要的软件包安装到linux系统的一套管理机制,最大特点是:
1、由于软件包是已经编译过且打包完毕的,所以软件传输与安装很方便
2、由于软件安装之后信息都记录在数据库中,很方便查询,升级与卸载
数据库在/var/lib/rpm
3、RPM不仅是作为软件包管理的工具,还可以进行制作软件包,将源码格式编译后经过处理,制作成rpm格式的软件包
RPM也有缺点,就是对软件之间的依赖关系不能很好的处理,例如A依赖B,B依赖C这样还好,顺序安装就可以,但是在linux中有可能会出现A依赖B,B依赖C,而C却依赖A,这样就让人很头疼了,所以就有了另一种软件管理机制yum,yum就是为了处理软件依赖关系而产生的。
RPM的命名格式,RPM有主包和子包之分
1、安装
rpm -i{vh} PACKAGE_FILE
-i:安装
-h:以#号显示进度,每个#号代表2%
-v:显示详细信息
-ivh也是常用组合选项
-vv:显示更详细信息
--nodeps:忽略依赖关系
--prefix:指定软件的安装路径
--replacefiles:解决安装过程中出现某些文件已经被被安装在系统上,则直接覆盖
--replacepkgs:重新安装,替换原有安装
--force:强制安装,可以实现重装或降级
--test:测试依赖关系
2、查询
rpm -q{ilcdf} PACKAGE_NAME
-q:查询
-i:查询指定包的说明信息
-l:查询指定包安装后生成的文件列表
-c:查询指定包生成的配置文件
-d:查询指定包的帮助文件
--scripts PACKAGE_NAME:查询指定包中包含的脚本
-f /PATH/FILE:查询指定的文件是由哪个rpm包生成的
如果某个rpm包尚未安装,查询说明信息、安装后要生成的文件使用
rpm -qfi PACKAGE_NAME
rpm -qfl PACKAGE_NAME
3、升级
rpm -U PACKAGE_NAME:如果装有老版本,则升级否则,则安装
rpm -F PACKAGE_NAME:如果装有老版本,则升级否则,则退出
--oldpackage:降级
4、卸载
rpm -e PACKAGE_NAME
--nodeps:忽略依赖关系
5、校验
rpm -V{apf} PACKAGE_NAME:校验文件,没有返回值则表示没有修改过任何文件
-a:校验目前系统上面所有可能被更劢过的文件
-p:校验软件内可能被更改过的文件
-f:校验某个文件是否被更改过
返回值的属性信息:
S :文件的容量大小是否被改变
M :文件的类型和文件的属性 (rwx) 是否被改变
5 :MD5 值是否相同
D :设备的主/次代码是否改变
L :Link 路径已被改变
U :文件的属主已被改变
G :文件的所属组已被改变
T :文件的建立时间已被改变
6、重建数据库
rpm -- rebuilddb:重建数据库
rpm --initdb:初始化数据库
7、检查来源合法性及软件包完整性
/etc/pki/rpm-gpg/存放RedHat释出的公钥
导入秘钥文件:
rpm --export /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
rpm -K PACKAGE_NAME:检验文件
dsa,gpg:检验来源合法性,也即验证签名
sha1,md5:验证完整性
--nosignature:忽略签名
--nodigest:忽略验证完整性