软件安装与升级——rpm
Linux的自由软件非常多,为了方便软件的管理,目前有两大主流软件管理工具:
dpkg
和RPM
。本文主要介绍RPM
的相关信息。
RPM与SRPM
RPM
是RedHat Package Manager
的简称,是一种软件管理机制,起初是有RedHad
公司发展出来的。RPM
是以一种数据库记录的方式来将我们所需的软件安装到Linux系统中。RPM
软件包制作时,会将安装软件源码进行编译,并将安装该软件时所需的关联软件记录到软件包的数据库中,。当开始安装软件时,RPM
会通过软件包里的数据库数据检查安装环境中是否已安装关联软件,若关联软件已安装则开始安装该软件,若关联软件未安装则不予安装。安装时,RPM
会将软件信息写入相关的数据库,以便未来的查询、验证和删除。通过RMP
的这些机制,我们可以发现其有以下优点:
RPM
内含已经编译过的程序与配置文件等数据,可以让用户免除重新编译的困扰RPM
在被安装前,会先检查系统的硬盘容量、操作系统版本等,避免文件被错误安装RPM
文件本身提供软件版本信息、关联软件名称、软件用途说明、软件所含文件等信息,便于了解软件RPM
使用数据库记录文件的相关参数,便于软件升级、移除、查询、验证
但由于RPM
的这个机制,其在软件管理时也有以下问题:
- 软件安装时的环境必须与制作软件包时的环境一致
- 安装之前需要安装软件的关联软件
- 删除软件时,与该软件关联的底层软件不可先删除,否则可能造成整个系统的问题
为了解决以上问题,SRPM
出现了。SRPM
是Source RPM
的意思,RPM
软件包里含有软件的原始码,SPRM
软件包提供的软件内容并没有经过编译,提供的是原始码。通常SRPM
的扩展名是以*.src.rpm
的格式命名。虽然SRPM
和Tarball
一样只提供原始码,但是SRPM
里面还含有软件所需的关联软件说明以及所有RPM文件所提供的数据。SRPM
和RPM
不同的是软件包提供了参数配置文件configure
、makefile
。当我们使用SRPM
软件包安装软件时,我们要执行以下步骤:
- 先将软件以
RPM
管理的方式编译,将SRPM
编译成RPM
文件 - 然后将编译完成的
RPM
文件安装到Linux系统中
下面是RPM
和SRPM
的简单比较。
软件包 | 文件格式 | 直接安装 | 程序类型 | 可否修改参数并编译 |
---|---|---|---|---|
RPM | xxx.rpm | 是 | 已编译 | 不可 |
SRPM | xxx.src.rpm | 否 | 原始码,未编译 | 可 |
软件包名称的命名格式
一般情况下,一个RPM
软件包的名称包含了软件名称、版本信息、编译次数、硬件操作平台这些信息。以软件包rp-pppoe-3.11-7.el7.x86_64.rpm
为例。
- 软件名称:每个软件的名称,以上软件包的软件名称为
rp-pppoe
- 版本信息:软件的版本,版本有主版本和次版本。以上软件包的主版本为
3
,次版本为11
。次版本就是在主版本的架构下改动部分原始码的内容 - 编译次数:由于一些bug或安全上的考虑,软件的代码会更新并编译
- 硬件操作平台:主要是指操作平台的
CPU
,由于RPM
可以适用在不同的操作平台上,但不同的平台CPU设定的参数还是有所差异性。开发者可以根据不同的CPU设定不同的参数,从而充分利用CPU,让软件性能更好。以下是软件包中常见的一些名称。
平台名称 | 适合平台说明 |
---|---|
i386 | 几乎适用于所有的 x86 平台,不论是旧的 pentum 还是新的 Intel Core 2 与 K8 系列的 CPU 等等,都可以 |