1.RPM概述
1.1 RPM Package Manager
- 由 Red Hat 公司提出,被众多 Linux 发行版所采用
- 建立统一的数据库文件
- 详细记录软件包安装、卸载等变化信息
- 自动分析软件包依赖关系
1.2 RPM软件包
软件素材参考:http://www.rpm.org
一般命名格式:
2.使用RPM软件包管理命令——rpm
2.1 rpm命令的格式
使用rpm命令能够实现几乎所有对RPM软件包的管理功能,执行“man rpm”命令可以获得关于rmp命令的详细帮助信息,如下:
从rpm命令的手册页信息中可以看出,rpm命令有好多的命令选项,结合这些选项主要可以实现以下三类功能。
- 查询、验证RPM软件包的相关信息
- 安装、升级、卸载RPM软件包
- 维护RPM数据库信息等综合管理操作
下面将分别对上述RPM管理功能中的常见操作进行说明。
2.2 查询RPM软件包信息
使用rpm命令的查询功能可以查看某个软件包是否已经安装,软件包的用途以及软件包的复制到系统中的文件等相关信息,以便更好地管理Linux操作系统中的应用程序。
(1)查询已安装的 RPM 软件信息
rpm -q[子选项] [软件名]
- -qa:显示当前系统中以RPM方式安装的所有软件列表
- -qi:查看指定软件包的名称、版本、许可协议、用途描述等详细信息
- -ql:显示指定的软件包在当前系统中安装的所有目录、文件列表
- -qf:查看当前指定的文件或目录是由哪个软件包所安装的
直接执行“rpm –qa”命令将列出当前操作系统中以RPM方式安装的所有软件包清单,如下:
可以结合管道符和“wc -l”命令,可以统计系统中已安装的RPM软件的个数,如下:
当需要查询某个软件包是否已经安装时,可以直接使用软件名称作为查询参数,如下:
如果不知道准确的软件包名称,还可以对全部查询结果进行过滤,如下:
如果想知道已安装的某个软件的用途,可以使用“rpm –qi 软件名”,如下:
当需要查看某个软件包安装的目录和文件清单时,可以使用“-ql”选项,如下:
当需要知道系统中的某一个文件是由哪一个软件生成的时候,可以使用“-qf”,如下:
注意:使用rpm 命令只能查询通过 RPM方式安装的软件包信息用,其他途径安装到系统中的软件包,rpm 命令将无法获取相关信息
(2)查询未安装的 RPM 软件包文件中信息
使用“-qp”选项时,必须以RPM软件包文件的路径作为参数(可以有多个),而不是软件包名称。
- -qpi: 查看指定软件包的名称、版本、许可协议、用途描述等详细信息
- -qpl: 显示指定的软件包准备要安装的所有目录、文件列表
若想在安装一个软件之前提前了解该软件的用途,可执行如下操作:
如希望进一步了解该软件中包含哪些文件(安装后将复制到系统中),可执行以下操作:
2.3安装、升级、卸载RPM软件包
- -i:在当前系统中安装一个新的RPM软件包
- -e:卸载指定名称的软件包
- -U:检查并升级系统中的某个软件包,若该软件包原来并未安装,则等同于“-i”选项
- -F:检查更新系统中的某个软件包,若该软件包原来并未安装,则放弃安装
- -h:在安装或升级软件包的过程中,以“#”号显示安装进度
- -v:显示软件安装过程中的详细信息
- --force:强制安装某个软件包
- --nodeps:在安装或升级、卸载一个软件包时,不检查与其他软件包的依赖关系
(1)安装、升级软件包
如果要升级只需将“-i”换成“-U”即可
(2)卸载软件包
2.4维护RPM数据库
(1)重建RPM数据库
当RPM数据库发生损坏,且Linux操作系统无法自动完成修复时,将导致无法使用rpm命令正常地安装、卸载及查询软件包。这时可以使用rpm命令的“--rebuilddb”或“--initdb”功能对RPM数据库进行重建,具体操作如下:
(2)导入公钥验证
在Linux/Unix应用领域,相当一部分软件厂商会对发布的软件包进行数字签名,以确保软件的完整性、合法性。对于用户来说,可以利用软件官方提供的公钥文件,自动对下载的软件包进行验证,如果在安装软件时出现验证失败的提示,则表示该软件包可能已经被非法篡改。
向RPM数据库中导入公钥文件时,需要用到“--import”选项。例如,执行以下操作可以把光盘目录中的RPM-GPG-KEY-CentOS-7公钥文件导入RPM数据库中。