1. rpm介绍
RPM(RPM Package Manager,RPM软件包管理器),是由Red Hat开发的,并用于Red Hat、Fedora、CentOS、SUSE等Linux发行版中的软件管理器,它遵循GPL规则且功能强大方便。它类似于Window系统中的"添加/删除程序",RPM的出现,让Linux软件更加易于安装、升级等。
RPM可用于安装*.rpm格式的二进制软件包,或*.src.rpm(SRPM)格式的源码包,也用于已安装软件的升级、卸载等,还可用于打包*.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的使用
SRPM即Source RPM,是一种RPM中包含了源代码的文件格式,一般为*.src.rpm格式。与.rpm格式相比,SRPM格式的软件需要编译安装,所以这种格式的适用性更强。SRPM安装会包含以下两步:
- 将源代码编译为RPM文件
- 将编译后的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
