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

退出打印视图

更新时间: 2014 年 7 月
 
 

如何使用 IPS 打包 Oracle Solaris OS

本附录介绍了 Oracle 如何使用 IPS 功能打包 Oracle Solaris OS,以及如何使用各种相关项类型定义 OS 的软件包工作集。

本附录还提供另一个有关使用 IPS 管理一组复杂软件的具体示例。

Oracle Solaris 软件包版本

软件包标识符: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
0.5.11

组件版本。对于属于 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
5.11

内部版本。此版本用于定义为其构建此软件包的 OS 发行版。对于为 Oracle Solaris 11 创建的软件包,内部版本应始终为 5.11。

0.175.1.0.0.2.1

分支版本。Oracle Solaris 软件包显示软件包 FMRI 中版本字符串的分支版本部分中的以下信息:

0.175

主发行编号。主要或市场开发发行版的内部版本号。在本示例中,0.175 表示 Oracle Solaris 11。

1

更新发行编号。此 Oracle Solaris 发行版的更新发行编号。对于 Oracle Solaris 发行版的第一个客户交付版本,更新值为 0,该发行版第一次更新后值为 1,第二次更新后值为 2,以此类推。在本示例中,1 表示 Oracle Solaris 11.1。

0

SRU 编号。此更新发行版的 Support Repository Update (SRU) 编号。SRU 仅包含错误修复,不包括新增功能。Oracle Support Repository 仅可用于具有支持合同的系统。

0

已保留。Oracle Solaris 软件包当前未使用该字段。

2

SRU 内部版本号。SRU 的内部版本号,或主要发行版的更新编号。

1

夜间生成的内部版本号。单个每日内部版本的内部版本号。

20120919T082311Z

时间戳。时间戳在发布软件包时定义。

Oracle Solaris Incorporation 软件包

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 软件包的 requireincorporate 相关项,将所有其他 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 组软件包

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

有关 info.classification 属性的信息,请参见设置操作。请参见Appendix A, 对软件包进行分类中的分类列表。

info.keyword

其他术语列表,应使搜索返回此软件包。

info.maintainer

用户可阅读的字符串,描述了提供软件包的实体。此字符串应该为名称、个人姓名和电子邮件或组织名称。

info.maintainer-url

与提供软件包的实体关联的 URL。

info.upstream

用户可阅读的字符串,描述了创建软件的实体。此字符串应该为名称、个人姓名和电子邮件或组织名称。

info.upstream-url

与实体关联的 URL,此实体可以创建在软件包中交付的软件。

info.source-url

软件包对应的源代码包的 URL(如果适用)。

info.repository-url

软件包对应的源代码系统信息库的 URL(如果适用)。

info.repository-changeset

info.repository-url 中包含的源代码的版本的变更集 ID。

Oracle Solaris 属性

org.opensolaris.arc-caseid

与 ARC(Architecture Review Committee,体系结构审查委员会)案例关联的一个或多个案例标识符(如 PSARC/2008/190),或与软件包交付的组件关联的多个案例。

org.opensolaris.smf.fmri

一个或多个 FMRI,代表由此软件包交付的 SMF 服务。pkgdepend 将自动为包含 SMF 服务清单的软件包生成这些属性。请参见 pkgdepend(1) 手册页。

特定于组织的属性

要为软件包提供其他元数据,请对属性名称使用特定于组织的前缀。组织可以使用此方法为在该组织中开发的软件包提供其他元数据,或修改现有软件包的元数据。要修改现有软件包的元数据,您必须对在其中发布该软件包的系统信息库具有控制权。例如,服务组织可能会引入一个名为 service.example.com,support-levelcom.example.service,support-level 的属性,用以说明对软件包及其内容的支持级别。

Oracle Solaris 标记

variant.opensolaris.zone

指定可以将软件包中的哪些操作可以安装在非全局区域、全局区域或者既可以安装在非全局区域也可以安装在全局区域。有关更多信息,请参见Chapter 10, 处理非全局区域