CentOS等Linux发行版中使用的RPM软件管理器

 2017年01月02日    53     声明

  1. rpm介绍
  2. rpm命令
  3. rpm的使用
  4. SRPM的使用

1. rpm介绍

RPM(RPM Package Manager,RPM软件包管理器),是由Red Hat开发的,并用于Red Hat、Fedora、CentOS、SUSE等Linux发行版中的软件管理器,它遵循GPL规则且功能强大方便。它类似于Window系统中的"添加/删除程序",RPM的出现,让Linux软件更加易于安装、升级等。

RPM可用于安装*.rpm格式的二进制软件包,或*.src.rpmSRPM)格式的源码包,也用于已安装软件的升级、卸载等,还可用于打包*.rpm格式文件。但RPM也有一些缺点,如:只能安装已经下载到本地*.rpm包、不能处理软件间的依赖关系、要求安装的环境与打包时的环境必须一致。

对于一个名为foo-1.1-5-i386.rpm的软件包,其各部分含义如下:

foo    -    1.1    -    5    -    i386    .rpm
软件名称    版本号      发布次数  适合的硬件平台


2. rpm命令

命令格式:

rpm [选项...] 包名

常用选项参数:

# 安装、更新、删除相关选项
-e, --erase=<package>+           移除包
--excludedocs                    不安装文档
--force                         忽略软件包及文件的冲突,--replacepkgs --replacefiles 的简写
-F, --freshen=<packagefile>+     升级已安装的包
-h, --hash                       打印安装包的哈希值
--ignorearch                     不验证包架构
--ignoreos                       不验证包适用的操作系统
--ignoresize                     安装前不验证磁盘空间
-i, --install                    安装指定的包
--nodeps                         不验证包的依赖项
--replacefiles                   忽略包之间的文件冲突
--replacepkgs                    重新安装包
--test                           不安装,仅测试
-U, --upgrade=<packagefile<+     更新包

# 查询相关选项(与-q 或 --query组合使用)
-c, --configfiles                列出所有配置文件
-d, --docfiles                   列出所有文档文件
-l, --list                       列出包中所有的文档
--queryformat=QUERYFORMAT        使用以下查询格式
-s, --state                      显示列出文件状态

验证相关选项 (与 -V 或 --verify组合使用):
--nofiledigest                   不验证文件的摘要
--nomd5                          不验证文件的摘要
--nofiles                        不验证包中的文件
--nodeps                         不验证包依赖
--noscript                       不执行验证脚本


3. rpm使用示例

3.1 rpm软件安装

安装名为foo-1.1-5-i386.rpm的软件,可以使用以下命令:

rpm -i foo-1.1-5-i386.rpm

为了看到安装信息及安装进度,我们通常还会加上-vh参数:

rpm -ivh foo-1.1-5-i386.rpm
  • -i - 表示install安装的意思
  • -v - 显示安装信息
  • -h - 表示显示安装进度


3.2 rpm软件升级与更新

软件升级可以使用-U-F参数,为了显示安装信息及安装进度通常也会加上-vh参数。如,升级foo-1.1-5-i386.rpm软件:

rpm -Uvh foo-1.1-5-i386.rpm
# 或
rpm -Fvh foo-1.1-5-i386.rpm

两者的区别是:

  • -Uvh - 当软件未安装时,会直接安装最新版。当已安装时,会升级到最新版
  • -Fvh - 只有当已安装时,才会升级到最新版。未安装则无操作


3.3 rpm卸载与重建数据库

卸载已安装的软件使用-e参数,同样可以添加-vh参数显示卸载进度:

rpm -e foo-1.1-5-i386.rpm

注意:rpm卸载并不会检查依赖关系,使用rpm卸载软件时应注意依赖关系,并根据依赖关系依次解除安装。

经常安装、卸载软件会造RPM数据库的损坏,这时可以使用--rebuilddb来重建数据库:

rpm --rebuilddb


3.4 rpm查询与验证

查询

rpm查询是指查询RPM数据库目录/var/lib/rpm下的文件。可以使用-q参数进行查询:

# 查询名为foo的软件
rpm -q foo

查询所有已经安装的软件:

rpm -qa

验证

rpm验证是指通过RPM数据库目录/var/lib/rpm下的文件,与当前系统中文件进行比较。进行验证使用-V参数:

rpm -V foo

也可以比较所有软件:

rpm -Va


4. SRPM的使用

SRPMSource RPM,是一种RPM中包含了源代码的文件格式,一般为*.src.rpm格式。与.rpm格式相比,SRPM格式的软件需要编译安装,所以这种格式的适用性更强。SRPM安装会包含以下两步:

  1. 将源代码编译为RPM文件
  2. 将编译后的RPM文件安装到系统中

SRPM包的编译安装使用rpmbuild命令,可以使用以下命令安装该命令:

yum install rpm-build

rpmbuild命令主要使用以下两个参数:

--rebuild        仅构建RPM文件但不安装
--recompile	       编译、打包并安装

如,编译一个名为foo-1.1-5-i386.srm.rpm的源码包:

rpmbuild --rebuild foo-1.1-5-i386.srm.rpm