在 Oracle® Solaris 11.2 中添加和更新软件

退出打印视图

更新时间: 2014 年 7 月
 
 

放宽由 Incorporation 指定的版本约束

incorporation 软件包指定可以安装哪些软件包版本。这些版本约束有助于使系统在更新后仍保持在可支持的状态。有关 incorporation 软件包和约束的更多信息,请参见incorporation 软件包

某些合并的软件包可以安全地降级或升级到与 incorporation 所指定的版本不同的版本。版本约束由在 incorporation 软件包中指定的 version-lock.package 侧面表示。version-lock.package 侧面的缺省值是 true。要放宽对软件包的版本约束,请将其 version-lock. 侧面的值设置为 false

在以下示例中,您希望将软件包降级到较早版本。pkg update 命令可对软件包进行降级与升级。

$ pkg list -af library/security/openssl
NAME (PUBLISHER)                    VERSION                    IFO
library/security/openssl            1.0.1.5-0.175.2.0.0.24.0  i--
library/security/openssl            1.0.1.5-0.175.2.0.0.23.0  --- 
$ pkg update library/security/openssl@1.0.1.5-0.175.2.0.0.23.0
Creating Plan (Solver setup): |
pkg update: No matching version of library/security/openssl can be installed:
  Reject: pkg://solaris/library/security/openssl@1.0.1.5,5.11-0.175.2.0.0.23.0:20130916T191702Z 
  Reason:  This version is excluded by installed incorporation 
  pkg://solaris/consolidation/userland/userland-incorporation@0.5.11,5.11-0.175.2.0.0.24.0:20131001T160408Z

pkg contents 命令会显示该版本约束是如何设置的。要放宽对该软件包的版本约束,请将其 version-lock 侧面设置为 false。然后再次尝试降级。请注意,未创建一个新的 BE,而是创建了一个备份 BE。有关何时创建 BE 的信息,请参见引导环境策略映像属性

$ pkg contents -m userland-incorporation | grep 'library/security/openssl'
depend facet.version-lock.library/security/openssl=true 
fmri=pkg:/library/security/openssl@1.0.1.5-0.175.2.0.0.24.0 type=incorporate
$ pkg change-facet facet.version-lock.library/security/openssl=false
            Packages to update: 850
     Variants/Facets to change:   1
       Create boot environment:  No
Create backup boot environment: Yes

PHASE                                          ITEMS
Removing old actions                             1/1
Updating image state                            Done
Creating fast lookup database                   Done
Reading search index                            Done
Building new search index                    850/850
$ pkg update library/security/openssl@1.0.1.5-0.175.2.0.0.23.0
            Packages to update:   1
       Create boot environment:  No
Create backup boot environment: Yes

DOWNLOAD                                  PKGS       FILES    XFER (MB)   SPEED
Completed                                  1/1       10/10      1.6/1.6    0B/s

PHASE                                          ITEMS
Removing old actions                             3/3
Installing new actions                           3/3
Updating modified actions                      14/14
Updating package state database                 Done
Updating package cache                           1/1
Updating image state                            Done
Creating fast lookup database                   Done
Reading search index                            Done
Updating search index                            1/1
$ pkg list library/security/openssl
NAME (PUBLISHER)                    VERSION                   IFO
library/security/openssl            1.0.1.5-0.175.2.0.0.23.0  i--

要防止降级或升级该软件包,请将该软件包冻结在当前版本。软件包列表中的 “f” 指示软件包已冻结。

$ pkg freeze -c "Downgrade to avoid bug" library/security/openssl
library/security/openssl was frozen at 1.0.1.5,5.11-0.175.2.0.0.23.0:20130916T191702Z
$ pkg list library/security/openssl
NAME (PUBLISHER)                    VERSION                   IFO
library/security/openssl            1.0.1.5-0.175.2.0.0.23.0  if-

要重新启用降级或升级,请使用 pkg unfreeze 命令来删除版本冻结。如果软件包的安装版本低于 incorporation 软件包中指定的版本,则将此软件包的 version-lock 侧面设置为 true 将安装 incorporation 软件包中指定的版本。

如果其他已安装的软件包与您要降级或升级的软件包之间存在 require 依赖关系,则您可能还需要对这些相关的软件包放宽版本约束。在以下示例中,已在 hexedit 软件包上解除了版本约束,但由于在 system/library 软件包中存在版本约束,所以安装遭到拒绝。

$ pkg install editor/hexedit@1.2.12-0.175.2.0.0.25.0
Creating Plan (Solver setup): -
pkg install: No matching version of editor/hexedit can be installed:
  Reject: pkg://solaris/editor/hexedit@1.2.12-0.175.2.0.0.25.0:20131014T170634Z
  Reason:  All versions matching 'require' dependency 
  pkg:/system/library@0.5.11,5.11-0.175.2.0.0.24.0 are rejected
    Reject: pkg://solaris/system/library@0.5.11,5.11-0.175.2.0.0.24.0:20131001T152820Z

pkg://solaris/system/library@0.5.11,5.11-0.175.2.0.0.25.0:20131014T161136Z
    Reason:  This version is excluded by installed incorporation 
    pkg://solaris/consolidation/osnet/osnet-incorporation@0.5.11,5.11-0.175.2.0.0.24.0:20131001T150429Z

除了单个的组件软件包,您还可以对 incorporation 放宽版本约束。在此情况下,将 version-lock 侧面设置为 false 可解除对系统其余部分的 incorporation 的锁定。虽然已解除对 incorporation 软件包的锁定,但仍会继续同步它合并的软件包。