一、什么是RPM
- RPM 全名 RedHat Package Managerment,是由Red Hat公司提出,被众多Linux发行版本所采用,是一种数据库记录的方式来将所需要的软件安装到到Linux系统的一套软件管理机制。
- 它会建立统一的数据库文件,详细记录软件包安装 、卸载等变化信息,能够自动分析软件包依赖关系
- 它最大的特点就是将你要安装的软件先编译过,并且打包成为 RPM 机制的文件,通过打包好的软件里面默认的数据库,记录这个软件要安装的时候必须具备的依赖属性软件。当在你的 Linux 主机安装时,RPM 会先依照软件里面的数据查询Linux 主机的依赖属性软件是否满足,若满足则子以安装,若不满足则不子安装。那么安装的时候就将该软件的信息整个写入 RPM 的数据库中,以便未来的查询、验证与反安装。
优点:
- 由于已经编译完成井且打包完华,所以软件传输与安装上很方便(不需要再重新编译)。
- RPM 在被安装之前,会先检查系统的硬盘容量、操作系统版本等,可避免文件被错误安装。
- RPM 本身提供软件版本信息、依赖属性检查、软件用途说明、软件所含文件等信息;便于了解软件
- RPM 管理使用数据库记录RPM文件的相关参数,便于查询、删除、升级与反安装。
缺点:
- 由于 RPM 文件是已经打包好的数据,也就是说,里面的数据已经都编译完成了,所以,该软件安装文件几乎只能安装在原本默认的硬件与操作系统版本中。所以你的主机系统环境必须要与当初建立这个软件安装文件的主机环境相同才行。
RPM包格式
一个RPM包包含了已经压缩的软件文件集和相关的软件内容信息,通常表现为以.rpm扩展名结尾的文件,如果是源代码包通常以src.rpm结尾。
rpm包命名一般格式:
name-version-release.arch.rpm
name:安装包的名称
version:版本信息
release:发行号、适应系统等
arch:适用的硬件平台。包括x86_64、i686等,noarch表示能安装在任何平台
zziplib-0.13.62-12.el7.x86_64.rpm
zziplib | 0.13.62 | 12 | .e17 | x86_64 | .rpm |
软件名称 | 版本信息 | 发布次数 | 企业版Linux7 | 硬件平台 | 拓展名 |
二、RPM命令
1.查询已安装的rpm软件信息
rpm -q 软件名 | 查询指定软件是否已安装 |
rpm -qi 软件名 | 显示已安装的指定软件的详细信息 |
rpm -ql 软件名 | 显示已安装的指定软件的文件列表 |
rpm -qc 软件名 | 列出已安装的指定软件的配置文件 |
rpm -qd 软件名 | 列出已安装的指定软件的软件包文档所在位置 |
rpm -qR 软件名 | 列出已安装的指定软件的依赖软件包及文件 |
rpm -qf 文件或目录 | 查询已安装的指定软件属于哪个安装包 |
rpm -qa | 显示当前系统中以rpm方式安装的所有软件列表 |
rpm -qa | grep -i yum | 查询软件名中包含yum的罗列出来 |
rpm -qi yum
rpm -qc yum
rpm -qa | grep -i yum
2.查询未安装的RPM软件包文件中信息
rpm -qpi rpm包文件名 | 查询指定软件包的详细信息 |
rpm -qpl rpm包文件名 | 查询指定软件包的文件列表 |
rpm -qpc rpm包文件名 | 查询指定软件包的配置文件 |
rpm -qpd rpm包文件名 | 查询指定软件包的软件包文档的位置 |
3.安装、升级、卸载RPM软件包
rpm [选项] RPM软件包文件
-i | 安装一个新的RPM软件包 |
-U | 升级某个软件包,若未安装过,则进行安装 |
-F | 升级某个安装包,若未安装过,则放弃安装 |
-h | 在安装或升级软件包的过程中,以“#”号显示安装进度 |
-v | 显示软件安装过程中的详细信息 |
--force | 强制安装某个软件包,比如要安装版本更旧的软件包 |
-e | 卸载指定名称的软件包 |
--nodeps | 在安装或升级、卸载一个软件包时,不检查与其他软件包的依赖关系 |
4.维护RPM数据包
1.重建 RPM 数据库
当 RPM 数据库发生损坏,可通过 重建RPM数据库 修复
rpm --rebuilddb 或者 rpm --initdb
2.导入验证公钥
在没有导入用于数字签名验证的公钥文件之前,安装光盘中的一部分RPM软件包时会报错。需要向RPM数据库中导入位于光盘根目录下的公钥文件
mount /dev/sr0 /mnt/
rpm --import /mnt/RPM-GPG-KEY-CentOS-7