本附录介绍了 Oracle 如何使用 IPS 功能打包 Oracle Solaris OS,以及如何使用各种相关项类型定义 OS 的软件包工作集。
本附录还提供另一个有关使用 IPS 管理一组复杂软件的具体示例。
软件包标识符:FMRI介绍了 pkg.fmri 属性以及版本字段的不同组件,包括如何使用版本字段支持软件开发的不同模型。本节介绍了 Oracle Solaris OS 如何使用版本字段,并带您深入了解细粒度版本控制方案为何很有用的原因。在您的软件包中,无需遵循 Oracle Solaris OS 使用的同一版本控制方案。
以下样例软件包 FMRI 中版本字符串的每个部分的含义如下所示:
pkg://solaris/system/library@0.5.11,5.11-0.175.1.0.0.2.1:20120919T082311Z
组件版本。对于属于 Oracle Solaris OS 一部分的软件包,这是 OS major.minor 版本。对于其他软件包,这是上游版本。例如,以下 Apache Web Server 软件包的组件版本为 2.2.22:
pkg:/web/server/apache-22@2.2.22,5.11-0.175.1.0.0.2.1:20120919T122323Z
内部版本。此版本用于定义为其构建此软件包的 OS 发行版。对于为 Oracle Solaris 11 创建的软件包,内部版本应始终为 5.11。
分支版本。Oracle Solaris 软件包显示软件包 FMRI 中版本字符串的分支版本部分中的以下信息:
主发行编号。主要或市场开发发行版的内部版本号。在本示例中,0.175 表示 Oracle Solaris 11。
更新发行编号。此 Oracle Solaris 发行版的更新发行编号。对于 Oracle Solaris 发行版的第一个客户交付版本,更新值为 0,该发行版第一次更新后值为 1,第二次更新后值为 2,以此类推。在本示例中,1 表示 Oracle Solaris 11.1。
SRU 编号。此更新发行版的 Support Repository Update (SRU) 编号。SRU 仅包含错误修复,不包括新增功能。Oracle Support Repository 仅可用于具有支持合同的系统。
已保留。Oracle Solaris 软件包当前未使用该字段。
SRU 内部版本号。SRU 的内部版本号,或主要发行版的更新编号。
夜间生成的内部版本号。单个每日内部版本的内部版本号。
时间戳。时间戳在发布软件包时定义。
Oracle Solaris 通过一组软件包交付,每组软件包都受 incorporation 约束。
每个 incorporation 基本上可以代表开发每组软件包的组织,尽管在软件包内部存在一些跨 incorporation 的相关项。Oracle Solaris 中包含以下 incorporation 软件包 (pkg list *incorporation):
pkg:/consolidation/SunVTS/SunVTS-incorporation pkg:/consolidation/X/X-incorporation pkg:/consolidation/admin/admin-incorporation pkg:/consolidation/cacao/cacao-incorporation pkg:/consolidation/cde/cde-incorporation pkg:/consolidation/cns/cns-incorporation pkg:/consolidation/dbtg/dbtg-incorporation pkg:/consolidation/desktop/desktop-incorporation pkg:/consolidation/desktop/gnome-incorporation pkg:/consolidation/gfx/gfx-incorporation pkg:/consolidation/install/install-incorporation pkg:/consolidation/ips/ips-incorporation pkg:/consolidation/java/java-incorporation pkg:/consolidation/jdmk/jdmk-incorporation pkg:/consolidation/l10n/l10n-incorporation pkg:/consolidation/ldoms/ldoms-incorporation pkg:/consolidation/man/man-incorporation pkg:/consolidation/nspg/nspg-incorporation pkg:/consolidation/nvidia/nvidia-incorporation pkg:/consolidation/osnet/osnet-incorporation pkg:/consolidation/sfw/sfw-incorporation pkg:/consolidation/sic_team/sic_team-incorporation pkg:/consolidation/solaris_re/solaris_re-incorporation pkg:/consolidation/sunpro/sunpro-incorporation pkg:/consolidation/ub_javavm/ub_javavm-incorporation pkg:/consolidation/userland/userland-incorporation pkg:/consolidation/vpanels/vpanels-incorporation pkg:/consolidation/xvm/xvm-incorporation
其中每个 incorporation 都包含以下信息:
软件包元数据。
类型为 incorporate 的相关项,有时包含 variant.arch 变量,用以指示特定于给定体系结构的相关项。有关 incorporate 相关项和 variant.arch 变量的更多信息,请参见incorporate 相关项和互斥软件组件。
license 操作,可确保在安装 incorporation 时显示许可证。有关 license 操作的更多信息,请参见许可证操作。
系统上提供的每个软件包都包含依赖于上述其中一个 incorporation 的 require 相关项。有关更多信息,请参见require 相关性。
Oracle Solaris 还包括名为 entire 的特殊 incorporation。entire incorporation 通过同时包含对每个 incorporation 软件包的 require 和 incorporate 相关项,将所有其他 incorporation 限制为同一内部版本。这样,entire incorporation 将定义一个软件表面,以便所有软件包作为单个组升级。
上述列出的一些 incorporation 使用 facet.version-lock.* 侧面,允许管理员使用 pkg change-facet 命令释放对指定软件包的 incorporation 的约束。有关更多信息,请参见放宽对可安装的软件包版本的约束。
例如,pkg:/consolidation/userland/userland-incorporation 软件包包含以下 facet.version-lock.* 定义:
.. depend type=incorporate \ fmri=pkg:/library/python-2/subversion@1.6.16-0.175.0.0.0.2.537 \ facet.version-lock.library/python-2/subversion=true depend type=incorporate \ fmri=pkg:/library/security/libassuan@2.0.1-0.175.0.0.0.2.537 \ facet.version-lock.library/security/libassuan=true depend type=incorporate \ fmri=pkg:/library/security/openssl/openssl-fips-140@1.2-0.175.0.0.0.2.537 \ facet.version-lock.library/security/openssl/openssl-fips-140=true depend type=incorporate fmri=pkg:/mail/fetchmail@6.3.21-0.175.0.0.0.2.537 \ facet.version-lock.mail/fetchmail=true depend type=incorporate \ fmri=pkg:/network/chat/ircii@0.2006.7.25-0.175.0.0.0.2.537 \ facet.version-lock.network/chat/ircii=true depend type=incorporate \ fmri=pkg:/print/cups/filter/foomatic-db-engine@0.20080903-0.175.0.0.0.2.537 \ facet.version-lock.print/cups/filter/foomatic-db-engine=true depend type=incorporate \ fmri=pkg:/print/filter/gutenprint@5.2.4-0.175.0.0.0.2.537 \ facet.version-lock.print/filter/gutenprint=true depend type=incorporate fmri=pkg:/runtime/erlang@12.2.5-0.175.0.0.0.2.537 \ facet.version-lock.runtime/erlang=true ..
entire 软件包还包含 version-lock 侧面。在此情况下,侧面允许从 entire incorporation 中删除指定的 incorporation。但这样会导致系统不受支持。这些软件包应仅在 Oracle 支持人员的设备上处于未锁定状态。
Oracle Solaris 定义了包含 group 相关项的多个组软件包。有关 group 相关项的更多信息,请参见group 相关项。通过这些组软件包,可以方便地安装常见软件包集。
Oracle Solaris 中包含以下组软件包:
$ pkg list -Has 'pkg:/group/*' group/feature/amp AMP (Apache, MySQL, PHP) Deployment Kit for Oracle Solaris group/feature/developer-gnu GNU Development Tools for Oracle Solaris group/feature/multi-user-desktop Oracle Solaris Multi User Desktop group/feature/storage-avs Sun StorageTek Availability Suite group/feature/storage-nas Network attached storage group package group/feature/storage-server Multi protocol storage server group package group/feature/trusted-desktop Oracle Solaris Trusted Desktop group/system/management/rad/rad-client-interfaces RAD client bindings group package group/system/management/rad/rad-server-interfaces RAD server modules group package group/system/solaris-auto-install Oracle Solaris Automated Installer Client group/system/solaris-core-platform Oracle Solaris Core Platform group/system/solaris-desktop Oracle Solaris Desktop group/system/solaris-large-server Oracle Solaris Large Server group/system/solaris-minimal-server Oracle Solaris Minimal Server group/system/solaris-small-server Oracle Solaris Small Server
solaris-small-server 组软件包将按用于安装非全局区域 (/usr/share/auto_install/manifest/zone_default.xml) 的缺省 AI 清单安装。有关更多信息,请参见 solaris(5)。
本节介绍一般操作属性和 Oracle Solaris 操作属性以及 Oracle Solaris 属性标记。
以下属性不是正确安装软件包所必需的属性,但具有共享约定可以降低混淆发布者和用户的可能性。
有关 info.classification 属性的信息,请参见设置操作。请参见Appendix A, 对软件包进行分类中的分类列表。
其他术语列表,应使搜索返回此软件包。
用户可阅读的字符串,描述了提供软件包的实体。此字符串应该为名称、个人姓名和电子邮件或组织名称。
与提供软件包的实体关联的 URL。
用户可阅读的字符串,描述了创建软件的实体。此字符串应该为名称、个人姓名和电子邮件或组织名称。
与实体关联的 URL,此实体可以创建在软件包中交付的软件。
软件包对应的源代码包的 URL(如果适用)。
软件包对应的源代码系统信息库的 URL(如果适用)。
info.repository-url 中包含的源代码的版本的变更集 ID。
与 ARC(Architecture Review Committee,体系结构审查委员会)案例关联的一个或多个案例标识符(如 PSARC/2008/190),或与软件包交付的组件关联的多个案例。
一个或多个 FMRI,代表由此软件包交付的 SMF 服务。pkgdepend 将自动为包含 SMF 服务清单的软件包生成这些属性。请参见 pkgdepend(1) 手册页。
要为软件包提供其他元数据,请对属性名称使用特定于组织的前缀。组织可以使用此方法为在该组织中开发的软件包提供其他元数据,或修改现有软件包的元数据。要修改现有软件包的元数据,您必须对在其中发布该软件包的系统信息库具有控制权。例如,服务组织可能会引入一个名为 service.example.com,support-level 或 com.example.service,support-level 的属性,用以说明对软件包及其内容的支持级别。
指定可以将软件包中的哪些操作可以安装在非全局区域、全局区域或者既可以安装在非全局区域也可以安装在全局区域。有关更多信息,请参见Chapter 10, 处理非全局区域。