JavaScript is required to for searching.
跳过导航链接
退出打印视图
在 Oracle Solaris 11.1 中使用映像包管理系统打包和交付软件     Oracle Solaris 11.1 Information Library (简体中文)
为本文档评分
search filter icon
search icon

文档信息

前言

1.  IPS 设计目标、概念和术语

2.  使用 IPS 打包软件

3.  安装、删除和更新软件包

4.  指定软件包相关项

5.  允许变量

6.  以编程方式修改软件包清单

7.  在软件包安装过程中自动进行系统更改

8.  有关软件包更新的高级主题

避免软件包内容冲突

重命名、合并和拆分软件包

重命名单个软件包

合并两个软件包

一个软件包兼并另一个软件包

重命名两个软件包

拆分一个软件包

使软件包过时

保留迁移的可编辑文件

删除或重命名目录时移动未打包的内容

交付应用程序的多个实现

交付要在引导环境之间共享的目录

如何将内容交付到共享目录

9.  对 IPS 软件包进行签名

10.  处理非全局区域

11.  修改已发布的软件包

A.  对软件包进行分类

B.  如何使用 IPS 打包 Oracle Solaris OS

请告诉我们如何提高我们的文档:
过于简略
不易阅读或难以理解
重要信息缺失
错误的内容
需要翻译的版本
其他
Your rating has been updated
感谢您的反馈!

您的反馈将非常有助于我们提供更好的文档。 您是否愿意参与我们的内容改进并提供进一步的意见?

交付应用程序的多个实现

您可能希望为给定的应用程序交付具有如下特征的多个实现:

交付应用程序的多个实现的一个示例为 GCC。Oracle Solaris 提供了多个版本的 GCC,每个版本均位于各自的软件包中,并且 /usr/bin/gcc 指向首选版本。

IPS 使用中介链接在单个映像中管理应用程序的多个实现。中介链接是指由 pkg set-mediatorpkg unset-mediator 命令控制的符号链接。对于软件包中用于交付应用程序的不同实现的 link 操作,可以说它们参与了仲裁pkg mediator 命令列出了映像中的仲裁。有关 mediator 命令的信息,请参见 pkg(1) 手册页。

可以在 link 操作上设置以下属性来控制中介链接的交付方式:

mediator

指定由给定仲裁组(例如 python)中涉及的所有路径名称共享的仲裁名称空间中的条目。

可基于 mediator-versionmediator-implementation 执行链接仲裁。给定路径名称的所有中介链接必须指定同一 mediator。但是,并非所有中介版本和实现都需要在给定路径上提供链接。如果仲裁不提供链接,则会在选定该仲裁时删除链接。

中介与特定版本和/或实现组合起来表示可选择供包管理系统使用的仲裁

mediator-version

指定 mediator 属性描述的接口的版本(表示为非负整数的点分序列)。如果指定了 mediator 而未指定 mediator-implementation,则此属性是必需的。本地系统管理员可以显式设置要使用的版本。指定的值通常应当与交付链接的软件包的版本相匹配。例如,runtime/python-26 应使用 mediator-version=2.6,尽管不是必须这样做。

mediator-implementation

指定中介的实现。该属性可以与 mediator-version 属性一起指定或者用来代替后者。实现字符串不被视为有序的。如果系统管理员未明确指定,则是 pkg(5) 随机选择的一个字符串。

mediator-implementation 的值可以是由字母数字字符和空格组成的任意长度的字符串。如果实现本身可版本化或已版本化,则应在字符串结尾处在 @ 符号后指定版本。版本表示为非负整数的点分序列。如果存在多个版本的实现,则缺省行为是选择最高版本的实现。

如果系统上仅安装了特定路径的实现仲裁链接的一个实例,则会自动选择该实例。如果以后安装了该路径的其他链接,除非应用供应商、站点或本地覆盖或者如果某一链接进行了版本中介,否则不会切换链接。

mediator-priority

在解决中介链接中的冲突时,如果可能,pkg(5) 会选择 mediator-version 值最大的链接。如果这不可能,pkg(5) 会基于 mediator-implementation 选择链接。mediator-priority 属性用于为常规冲突解决方案过程指定覆盖。如果未指定 mediator-priority 属性,则会应用缺省中介选择逻辑。

mediator-priority 属性可以使用以下值之一:

vendor

与未指定 mediator-priority 的链接相比,将优先选择该链接。

site

与值为 vendor 或未指定 mediator-priority 的链接相比,将优先选择该链接。

本地系统管理员可以覆盖上面所述的选择逻辑。

样例清单中的以下两个摘录参与了链接 /usr/bin/myapp 的仲裁。实现 1 的版本为 5.8.4:

set name=pkg.fmri value=pkg://test/myapp-impl-1@1.0,5.11:20120721T035233Z
file path=usr/myapp/5.8.4/bin/myapp group=sys mode=0755 owner=root
link path=usr/bin/myapp target=usr/myapp/5.8.4/bin/myapp mediator=myapp mediator-version=5.8.4

实现 2 的版本为 5.12:

set name=pkg.fmri value=pkg://test/myapp-impl-2@1.0,5.11:20120721T035239Z
file path=usr/myapp/5.12/bin/myapp group=sys mode=0755 owner=root
link path=usr/bin/myapp target=usr/myapp/5.12/bin/myapp mediator=myapp mediator-version=5.12

这两个软件包可以安装在同一映像中:

$ pkg list myapp-impl-1 myapp-impl-2
NAME (PUBLISHER)                  VERSION      IFO
myapp-impl-1                      1.0          i--
myapp-impl-2                      1.0          i--

使用 pkg mediator 命令可查看正在使用的仲裁:

$ pkg mediator
MEDIATOR VER. SRC. VERSION IMPL. SRC. IMPLEMENTATION
myapp    local     5.12    system
$ ls -al usr/bin/myapp
lrwxrwxrwx 1 root sys 23 Jul 21 16:58 usr/bin/myapp -> usr/myapp/5.12/bin/myapp

使用 pkg search 命令可查看参与 myapp 仲裁的其他软件包:

$ pkg search -ro path,target,mediator,mediator-version,pkg.shortfmri ::mediator:myapp
PATH          TARGET                    MEDIATOR MEDIATOR-VERSION PKG.SHORTFMRI
usr/bin/myapp usr/myapp/5.12/bin/myapp  myapp    5.12             pkg:/myapp-impl-2@1.0
usr/bin/myapp usr/myapp/5.8.4/bin/myapp myapp    5.8.4            pkg:/myapp-impl-1@1.0

使用 pkg set-mediator 命令可更改仲裁。以下示例更改作为首选版本的 myapp 版本:

# pkg set-mediator -V 5.8.4 myapp
            Packages to update: 2
           Mediators to change: 1
       Create boot environment: No
Create backup boot environment: No

PHASE                                   ITEMS
Removing old actions                      2/2
Updating modified actions                 2/2
Updating image state                     Done
Creating fast lookup database            Done
Reading search index                     Done
Updating search index                     2/2
# ls -al usr/bin/myapp
lrwxrwxrwx  1 root    sys    24 Jul 21 17:02 usr/bin/myapp -> usr/myapp/5.8.4/bin/myapp