在 Oracle® Solaris 11.2 中使用映像包管理系统打包和交付软件

退出打印视图

更新时间: 2014 年 7 月
 
 

软件包标识符:FMRI

每个 IPS 软件包都通过一个故障管理资源标识符 (fault management resource identifier, FMRI) 进行标识,该标识符由发布者、名称、版本以及方案 pkg 组成。在以下软件包 FMRI 示例中,solaris 是发布者,system/library 是软件包名称,0.5.11,5.11-0.175.0.0.0.2.1:20111019T082311Z 是版本:

pkg://solaris/system/library@0.5.11,5.11-0.175.1.0.0.2.1:20120919T082311Z

如果缩写形式的 FMRI 仍然是唯一的,则可以采用缩写形式指定 FMRI。方案、发布者和版本可以省略。可以在软件包名称中省略前导组件。

  • 当 FMRI 以 pkg://// 开头时,// 后面的第一个单词必须是发布者名称,并且不能省略软件包名称中的任何一个组件。当未省略软件包名称中的任何组件时,软件包名称被视为完整的或有根的

  • 当 FMRI 以 pkg:// 开头时,斜杠后面的首个单词是软件包名称,并且不能省略软件包名称中的任何组件。不能提供发布者名称。

  • 当省略版本时,通常会将软件包解析为可以安装的最新软件包版本。

软件包发布者

发布者是指开发和构造软件包的实体。发布者名称(或前缀)唯一地标识此来源。发布者名称可以包含大写和小写字母、数字、连字符和句点,与有效主机名所包含的字符相同。对于发布者名称,Internet 域名或注册商标是很好的选择,因为它们提供了天然的名称空间划分。

在确定打包解决方案时,软件包客户机会将给定发布者的所有指定来源的软件包合并在一起。

软件包名称

软件包名称是由任意数量的组件按层次结构组成的名称,其中组件之间由正斜杠 (/) 字符分隔。软件包名称组件必须以字母或数字开头,并且可以包含下划线 (_)、连字符 (-)、句点 (.) 和加号 (+)。软件包名称组件区分大小写。

软件包名称构成了跨发布者的单个名称空间。从外部相关项和接口的角度来看,可以认为名称和版本相同但发布者不同的软件包是可以互换的。

如果使用的软件包名称是唯一的,则可以省略软件包名称的前导组件。例如,/driver/network/ethernet/e1000g 可以缩写为 network/ethernet/e1000gethernet/e1000g,甚至只有 e1000g。当未省略软件包名称中的任何组件时,软件包名称被视为完整的或有根的。如果包管理客户机指出软件包名称具有多义性,请指定包含更多组件的软件包名称,或指定完整的有根名称。为软件包选择名称时,应尽可能降低多义性。

如果 FMRI 包含发布者名称,则必须指定完整的有根软件包名称。

脚本应通过软件包的完整有根名称来引用软件包。

还可以使用星号 (*) 来指定 FMRI 以匹配软件包名称中的任一部分。因此,/driver/*/e1000g/dri*00g 均可以展开为 /driver/network/ethernet/e1000g

软件包版本

软件包版本包含四个由标点符号分隔的正整数序列。前三个序列中的元素由句点 (.) 分隔,各序列可具有任意长度。不允许在版本元素中使用前导零,以便能够按软件包版本进行明确排序。例如,01.1 和 1.01 是无效的版本元素。

在以下软件包版本示例中,第一个序列为 0.5.11,第二个序列为 5.11,第三个序列为 0.175.1.0.0.2.1,第四个序列为 20120919T082311Z

0.5.11,5.11-0.175.1.0.0.2.1:20120919T082311Z
组件版本

第一个序列是组件版本。对于作为 Oracle Solaris 的一部分而开发的组件,此序列代表最后一次更改此软件包时的发行点。对于具有自己的开发生命周期的组件,此序列是一个由小圆点分隔的发行编号,例如 2.4.10。

内部版本

第二个序列是内部版本。如果提供此序列,前面必须有一个逗号。Oracle Solaris 使用此序列指示编译软件包时所针对的 OS 的发行版。

分支版本

第三个序列是分支版本,提供特定于供应商的信息。如果提供此序列,前面必须有一个连字符。此序列可以包含内部版本号或提供一些其他信息。该值可以在打包元数据发生更改时增大,独立于组件。有关 Oracle Solaris 中如何使用分支版本字段的说明,请参见Oracle Solaris 软件包版本

时间戳

第四个序列是时间戳。如果提供此序列,前面必须有一个冒号。此序列表示在 GMT 时区中软件包的发布日期和时间。此序列在发布软件包时自动更新。

软件包版本按从左到右的优先级进行排序:紧跟在 @ 之后的数字是版本空间中最重要的部分。时间戳是版本空间中最不重要的部分。

pkg.human-version 属性可用于提供人工可读的版本字符串。除了提供上面针对软件包 FMRI 介绍的软件包版本外,还可以提供 pkg.human-version 属性的值,但它不能替代软件包 FMRI 的版本。人工可读的版本字符串仅用于显示。有关更多信息,请参见设置操作

通过允许任意版本长度,IPS 可以提供用来支持软件的各种不同模型。例如,软件包设计者可以使用内部版本或分支版本并将版本控制方案的一部分指定给安全更新,一部分用于付费和免费的支持更新,还有一部分用于次要错误修复,或用于任何需要的信息。

版本还可以是 latest 标记,该标记指定已知的最新版本。

Appendix B, 如何使用 IPS 打包 Oracle Solaris OS介绍了 Oracle Solaris 如何实现版本控制。