RPM 版本和命名方案

RPM 是一个强大的软件管理器,可用于构建、安装、查询、验证、更新和卸载单个软件包。
RPM 包由文件存档和包信息(如名称、版本、描述和有关其他 RPM 包的依赖关系的信息)组成。

RPM 命名方案

每个 RPM 包都包含在一个文件中。
文件名有几个字段来完全标识包的内容。
虽然 RPM 工具本身不依赖于文件名本身,但我们应该了解文件名约定以识别或者下载正确的包。

这是一个示例 RPM 文件名:

bash-3.1-16.1.x86_64.rpm

此 RPM 用于 BASH shell ("/bin/bash")。
文件名由几部分组成:

[name]-[version]-[release].[arch].rpm

其中:

  • [name] 是程序或者包的名称。 [name] 通常由程序的作者指定。在我们的示例中,开发人员出于对他们来说似乎很有趣的原因决定将他们的产品命名为“bash”。
  • [version] 标识此 RPM 包含的软件版本。 [版本] 编号由程序作者分配。使用 [version] 编号可以确定作者来源的哪个版本用于生成 RPM。
  • [release] 提供的是 RPM 文件本身的版本号,而不是作者源文件的版本。可能会发布更新的 RPM 以提供作者原始软件的修补版本。补丁不一定来自原始开发人员,因此 RPM [release] 增加而不是 [version]。
  • [arch] 描述 RPM 的内容,并说明该文件是否包含产品源(“.src.rpm”)、与体系结构无关的文件(“.noarch.rpm”),或者只能安装在特定的主机类型(“.sh.rpm”仅适用于 STRONGHOLD 嵌入式处理器)。
之路教程 https://onitr oad .com

了解 RPM 版本

RPM [version] 和 [release] 字段并不总是严格的数字,可能包含除普通数字之外的其他字符。
通常会同时看到同一包的“10”和“10a”版本。
有时选择最新版本可能会很棘手。
以下是 RPM 本身如何在内部比较版本和发布编号:

  1. 删除 [name] 前缀和“.[arch].rpm”后缀。
    例如,“bash-3.1-16.1.x86_64.rpm”变为“3.1-16.1”,“bash-3.1-16.5a.1.x86_64.rpm”变为“3.1-16.5a.1”

  2. 从左到右逐个字符比较剩余的字符串,直到遇到一个数字。
    如果字符不同,则整理序列中较晚出现的字符是较新的 RPM。

  3. 遇到数字时,将整个数字序列转换为单个二进制数。
    在我们的示例中,两个字符“16”组合为十六 (16) 值。
    比较结果二进制值,较大的值是最近的 RPM。
    因此,[版本] 为“0010”的 RPM 比 [版本] 为“9”的 RPM 更新。

  4. 根据需要重复步骤 2 和 3,直到出现差异。

日期:2020-09-17 00:14:40 来源:oir作者:oir