Go to main content
Oracle® Solaris 11.3 ソフトウェアの追加と更新

印刷ビューの終了

更新: 2017 年 3 月
 
 

許可される最新バージョンより古いバージョンへの更新

場合によっては、許可される最新バージョンに更新したくないこともあります。このセクションでは、許可される最新バージョンより古いバージョンに更新する方法を説明します。

  • 更新コマンドにバージョンを指定します。これは永続的な副作用のないもっとも単純な方法です。

  • 更新コマンドを指定する前にバージョン制限を指定します。この方法では pkg freeze を使用するため、あとで新しいバージョンに更新する場合は必ず凍結を解除する必要があります。

  • カスタムの制約パッケージを使用します。これはもっともスケーラブルで制御可能であり、追跡可能な方法です。

インストールするバージョンの指定

許可される最新バージョンより古いバージョンに更新するための簡単な方法は、pkg update コマンドでパッケージ名 (バージョン文字列の部分を含む) を指定することです。次の例は、新しいバージョンが許可される場合でも、Oracle Solaris 11 11/11 SRU 13 に更新するために pkg:/entire 制約パッケージのバージョンを指定する方法を示しています。

$ pkg update -nv entire@0.5.11,5.11-0.175.0.13 '*'
            Packages to remove:        2
           Packages to install:        1
            Packages to update:      486
     Estimated space available: 48.39 GB
Estimated space to be consumed:  2.50 GB
       Create boot environment:      Yes
     Activate boot environment:      Yes
Create backup boot environment:       No
          Rebuild boot archive:      Yes

Changed packages:
solaris
...
  entire
    0.5.11,5.11-0.175.0.10.0.5.0:20120803T182627Z -> 0.5.11,5.11-0.175.0.13.0.4.0:20121106T194623Z
... 

実際の更新を実行する前に、必ず -nv オプションを使用し、出力を確認してください。実際の更新を実行するときは、--be-name オプションを使用して、新しい BE にわかりやすい名前を付けます。

一部のインストール済みパッケージは、entire 制約パッケージによって制約されたパッケージに依存しない場合もあります。これらのパッケージは、entire パッケージだけを更新しても更新されません。これらのパッケージを同じ pkg update コマンドに名前で追加するか、entire@version に加えて * を指定できます。


注 -  コマンド行でバージョン制約を指定することは、多数のシステムを管理するための最適な方法ではありません。最適なスケーラブルなソリューションは、Using an Oracle Solaris Constraint Packageおよび Installing a Custom Constraint Packageの説明に従って制約パッケージを使用することです。

更新前のバージョン制約の指定

任意の Oracle Solaris 11.2 バージョンへの更新は許可するが、Oracle Solaris 11.3 への更新を許可しない場合は、次のコマンドに示すように pkg:/entire 制約パッケージを凍結できます。0.175.2 を指定すると、entire パッケージを 0.175.3 にではなく、たとえば 0.175.2.15 に更新できることを示します。

$ pkg freeze -c "Keep this image at 11.2." entire@0.5.11,5.11-0.175.2
entire was frozen at 0.5.11,5.11-0.175.2
$ pkg freeze
NAME    VERSION             DATE                     COMMENT
entire  0.5.11,5.11-0.175.2 30 Jan 2014 15:50:01 PST Keep this image at 11.2.
$ pkg list entire
NAME (PUBLISHER)  VERSION                       IFO
entire            0.5.11,5.11-0.175.2.10.0.5.0  if-

パッケージの凍結の詳細は、Locking Packages to a Specified Versionを参照してください。

Oracle Solaris 11.2 を越えて更新するには、pkg unfreeze entire を実行するか、entire をより新しいバージョンで凍結する必要があります。


注 -  パッケージを凍結することは多数のシステムを管理するための最適な方法ではありません。最適なスケーラブルなソリューションは、Using an Oracle Solaris Constraint Packageおよび Installing a Custom Constraint Packageの説明に従って制約パッケージを使用することです。

Oracle Solaris 制約パッケージの使用

前のセクションで示した pkg freeze コマンドを使用するのと同じように、インストール可能な pkg:/entire のバージョンを制約するパッケージをインストールできます。制約パッケージと、Oracle Solaris でのその使用についての詳細は、Constraint Packagesを参照してください。

Oracle Solaris 11.3 には、pkg:/entire を Oracle Solaris 11.3 の任意のバージョンに制約するパッケージが用意されています。

$ pkg list -s solaris-11.3
NAME (PUBLISHER)                 SUMMARY
release/constraint/solaris-11.3  Constraint Package for Oracle Solaris 11.3

このパッケージの内容は、このパッケージをインストールした場合、システムを Oracle Solaris 11.3 SRU など任意の Oracle Solaris 11.3 リリース (entire@0.5.11-0.175.3) には更新できるが、より新しい Oracle Solaris 11.n リリースには更新できないことを示しています。

$ pkg contents -m solaris-11.3
set name=pkg.fmri value=pkg://solaris/release/constraint/solaris-11.3@0,5.11:20161021T222558Z
set name=pkg.summary value="Constraint Package for Oracle Solaris 11.3"
set name=variant.arch value=sparc value=i386
set name=pkg.depend.install-hold value=core-os
depend fmri=entire@0.5.11-0.175.3 type=incorporate
depend fmri=entire type=require
  • solaris-11.3 パッケージをインストールしたあとで、入手可能な最新の Oracle Solaris 11.3 リリースがすでにインストールされているときに更新を試みると、使用可能な更新が存在しないというメッセージを受け取ります。

  • solaris-11.3 パッケージをインストールしたあとで、より新しい Oracle Solaris 11.n リリースへの更新を試みると、システムが過度に制約されているというメッセージを受け取ります。より新しい Oracle Solaris 11.n リリースに更新するには、まず solaris-11.3 制約パッケージをアンインストールする必要があります。

カスタム制約パッケージのインストール

前のセクションで示した Oracle Solaris 制約パッケージを使用するのと同じように、独自のカスタム制約パッケージを作成して、必要な制約を指定できます。Oracle Solaris パッケージ内で使用可能な制約とは異なる制約を指定する場合もあります。

  • 制約パッケージを作成し、ローカルの IPS パッケージリポジトリまたはパッケージアーカイブファイルからパッケージをインストールします。

  • 制約を変更するには、カスタム制約パッケージを変更および再提供し、pkg update を使用して、新しい制約パッケージをインストールします。

カスタム制約パッケージを使用して、インストール可能なソフトウェアのバージョンを制御することにより、複数のパッケージリポジトリを維持しなくても、異なるシステム上でさまざまなバージョンの Oracle Solaris を容易に維持できます。各システムに、異なるバージョンのカスタム更新制御パッケージをインストールできます。それぞれのシステムで必要なすべてのソフトウェアバージョンを格納する同一のパッケージリポジトリが、すべてのシステムで共有されます。

カスタム制約パッケージの作成

イメージにインストール可能なコアのオペレーティングシステムパッケージのバージョンは、pkg:/entire 制約パッケージによって制御されます。システムのアップグレードを制御するには、特定バージョンの entire パッケージを incorporate 依存関係として指定するパッケージを作成します。

カスタム制約パッケージマニフェストの作成

次の例は、インストール可能な pkg:/entire パッケージのバージョンを制御するカスタム制約パッケージに対する upgradectrl.p5m という名前のマニフェストを示します。このマニフェストの設定の一部を以下に示します。

set name=pkg.fmri value=upgradectrl@1.0
set name=pkg.summary value="Incorporation to constrain the version of the OS"
set name=pkg.description value="This package controls the version of \
pkg://solaris/entire that can be installed."
set name=info.classification value="org.opensolaris.category.2008:Meta Packages/Incorporations"
set name=pkg.depend.install-hold value=core-os
set name=variant.opensolaris.zone value=global value=nonglobal
set name=variant.arch value=sparc value=i386
depend fmri=feature/package/dependency/self type=parent variant.opensolaris.zone=nonglobal
depend fmri=pkg://solaris/entire type=require
depend fmri=pkg://solaris/entire@0.5.11,5.11-0.175.1.0 type=incorporate
pkg.depend.install-hold

ユーザーが pkg update upgradectrl コマンドを入力すると、pkg:/entire パッケージも自動的に更新されます。

variant.opensolaris.zone

このパッケージは、大域ゾーンと非大域ゾーンの両方にインストールできます。parent 依存関係の説明も参照してください。

variant.arch

このパッケージは、SPARC と x86 の両方のシステムにインストールできます。

parent 依存関係

このパッケージは、大域ゾーンにすでにインストール済みの場合に限り、非大域ゾーンにインストールできます。

require 依存関係

upgradectrl パッケージは、pkg://solaris/entire パッケージがすでにインストールされているか、これと同じ操作でインストール可能である場合に限りインストールできます。

incorporate 依存関係

pkg://solaris/entire パッケージを指定のバージョンでインストールする必要があります。指定された精度の桁数によっては、複数のバージョンが incorporate 依存関係を満たす場合があります。この例では、0.175.1.0 は Oracle Solaris 11.1 SRU 0 を指定します。このアップグレード制御パッケージは、サポート更新のない Oracle Solaris 11.1 にシステムを維持します。ただし、このアップグレード制御パッケージは、pkg:/entire 制約パッケージによる制約を受けないパッケージの更新を許可します。

アップグレード制御パッケージの公開

upgradectrl パッケージをファイルベースのローカルリポジトリに公開します。このリポジトリは、この新しいパッケージを開発およびテストするためのものです。一般的な用途のリポジトリを作成する場合、リポジトリ用の別個のファイルシステムを作成するなどの追加のステップを含める必要があります。一般的な用途のパッケージリポジトリを作成することについては、Copying and Creating Package Repositories in Oracle Solaris 11.3を参照してください。

システム上にパッケージ開発リポジトリを作成します。pkgrepo コマンドについては、pkgrepo(1) のマニュアルページを参照してください。

$ pkgrepo create myrepo

このリポジトリのデフォルトパブリッシャーを設定します。デフォルトパブリッシャーは、リポジトリの publisher/prefix プロパティーの値です。

$ pkgrepo -s myrepo set publisher/prefix=site

upgradectrl パッケージを開発リポジトリに公開します。

$ pkgsend -s myrepo publish upgradectrl.p5m
pkg://site/upgradectrl@1.0,5.11:20131104T072336Z
PUBLISHED

リポジトリのデフォルトパブリッシャーが、パッケージ FMRI に適用されていることに注意してください。

リポジトリを調べて、パッケージが公開されたことを確認します。

$ pkgrepo -s myrepo list
PUBLISHER NAME                    O VERSION
site      upgradectrl               1.0,5.11:20131104T072336Z
$ pkg list -vg myrepo
FMRI                                                   IFO
pkg://site/upgradectrl@1.0,5.11:20131104T072336Z       ---

O 列の値は、パッケージが廃止されている (o) か、または名前が変更されている (r) かを示します。

パッケージを、共有されている場所にある別個の ZFS ファイルシステム内のローカルリポジトリに提供します。

$ pkgrecv -s myrepo -d /var/share/pkgrepos/solaris upgradectrl
Processing packages for publisher site ...
Retrieving and evaluating 1 package(s) ...
PROCESS      ITEMS    GET (MB)    SEND (MB)
Completed      1/1     0.0/0.0      0.0/0.0

リポジトリ内のパッケージと、パッケージが incorporation で指定する pkg:/entire のバージョンを確認します。

$ pkg info -g /var/share/pkgrepos/solaris upgradectrl
          Name: upgradectrl
       Summary: Incorporation to constrain the version of the OS
   Description: This package controls the version of pkg://solaris/entire that
                can be installed.
      Category: Meta Packages/Incorporations
         State: Not installed
     Publisher: site
       Version: 1.0
 Build Release: 5.11
        Branch: None
Packaging Date: November 20, 2013 01:01:05 AM 
          Size: 0.00 B
          FMRI: pkg://site/upgradectrl@1.0,5.11:20131120T010105Z
$ pkg contents -Hro fmri -t depend -a type=incorporate upgradectrl
pkg://solaris/entire@0.5.11,5.11-0.175.1.0

IPS パッケージの作成と提供についての詳細は、Creating and Publishing a Package in Packaging and Delivering Software With the Image Packaging System in Oracle Solaris 11.3を参照してください。

パブリッシャーの起点の設定

site パブリッシャーの起点を設定します。システムリポジトリはこの情報で自動的に更新されるため、非大域ゾーンでは site パブリッシャーからパッケージにアクセスできるようになります。

$ pkg set-publisher -g /var/share/pkgrepos/solaris site
$ pkg publisher
PUBLISHER              TYPE     STATUS P LOCATION
solaris                origin   online F https://pkg.oracle.com/solaris/support/
site                   origin   online F file:///var/share/pkgrepos/solaris/

アップグレード制御パッケージのインストール

パッケージをインストールします。このケースでは、インストール済みの pkg:/entire のバージョンが、アップグレード制御パッケージによって incorporation 指定されたバージョンと同じであるため、変更はほとんどありません。パッケージは非大域ゾーンにもインストールされることに注意してください。

$ pkg list -v entire
FMRI                                                                         IFO
pkg://solaris/entire@0.5.11,5.11-0.175.1.0.0.24.2:20120919T190135Z           i--
$ zoneadm list
global
z1
$ pkg install upgradectrl
           Packages to install:  1
       Create boot environment: No
Create backup boot environment: No

Planning linked: 0/1 done; 1 working: zone:z1
Planning linked: 1/1 done
Downloading linked: 0/1 done; 1 working: zone:z1
Downloading linked: 1/1 done
PHASE                                          ITEMS
Installing new actions                           9/9
Updating package state database                 Done 
Updating image state                            Done 
Creating fast lookup database                   Done 
Reading search index                            Done 
Updating search index                            1/1 
Executing linked: 0/1 done; 1 working: zone:z1
Executing linked: 1/1 done

次のコマンドは、インストール済みのバージョンよりも新しいバージョンの pkg:/entire が、構成済みの solaris パブリッシャーから入手できますが、アップグレードの試行は新しくインストールされたアップグレード制御パッケージによって制御されていることを示しています。

$ pkg list -af entire
NAME (PUBLISHER)                                  VERSION                    IFO
entire                                            0.5.11-0.175.1.13.0.6.0    ---
entire                                            0.5.11-0.175.1.12.0.5.0    ---
entire                                            0.5.11-0.175.1.11.0.4.0    ---
entire                                            0.5.11-0.175.1.10.0.6.0    ---
entire                                            0.5.11-0.175.1.10.0.5.0    ---
...
$ pkg update
pkg update: No solution was found to satisfy constraints
Plan Creation: Package solver has not found a solution to update to latest available versions.
This may indicate an overly constrained set of packages are installed.
latest incorporations:
...
Try specifying expected results to obtain more detailed error messages.
$ pkg update -nv entire@0.5.11-0.175.1.13.0.6.0
pkg update: No matching version of entire can be installed:
  Reject:  pkg://solaris/entire@0.5.11,5.11-0.175.1.13.0.6.0:20131108T211557Z
  Reason:  This version is excluded by installed incorporation pkg://site/upgradectrl@1.0,5.11:20131120T010105Z

アップグレード制御パッケージの更新

システムを新しいバージョンに更新することをユーザーに許可する準備が整ったら、upgradectrl.p5m マニフェストを更新し、新しい更新制御パッケージを再発行して再提供します。次のマニフェストでは、更新制御パッケージのバージョンと、pkg:/entire 制約パッケージのバージョンが更新されています。ユーザーへの支援として、アップグレード制御パッケージのバージョン 1.10 は、entire パッケージの更新済みバージョン 0.175.1.10 に対応するように設定されます。

set name=pkg.fmri value=upgradectrl@1.10
set name=pkg.summary value="Incorporation to constrain the version of the OS"
set name=pkg.description value="This package controls the version of \
pkg://solaris/entire that can be installed."
set name=info.classification value="org.opensolaris.category.2008:Meta Packages/Incorporations"
set name=pkg.depend.install-hold value=core-os
set name=variant.opensolaris.zone value=global value=nonglobal
set name=variant.arch value=sparc value=i386
depend fmri=feature/package/dependency/self type=parent variant.opensolaris.zone=nonglobal
depend fmri=pkg://solaris/entire type=require
depend fmri=pkg://solaris/entire@0.5.11,5.11-0.175.1.10 type=incorporate

次のコマンドにより、更新制御パッケージが再発行および再提供されます。

$ pkgsend -s myrepo publish upgradectrl.p5m
pkg://site/upgradectrl@1.10,5.11:20131120T021902Z
PUBLISHED
$ pkgrepo -s myrepo list
PUBLISHER NAME                                      O VERSION
site      upgradectrl                                 1.10,5.11:20131120T021902Z
site      upgradectrl                                 1.0,5.11:20131120T010105Z
$ pkgrecv -s myrepo -d /var/share/pkgrepos/solaris upgradectrl
Processing packages for publisher site ...
Retrieving and evaluating 1 package(s)...
PROCESS                                         ITEMS    GET (MB)   SEND (MB)
Completed                                         1/1     0.0/0.0     0.0/0.0
$ pkg refresh site
$ pkg list -af pkg://site/upgradectrl
NAME (PUBLISHER)                                  VERSION                    IFO
upgradectrl (site)                                1.10                       ---
upgradectrl (site)                                1.0                        i--

イメージのアップグレード

次の pkg update コマンドではパッケージが指定されていないため、すべてのパッケージは入手可能で許可されている最新バージョンに更新されます。コマンドにより、アップグレード制御パッケージは入手可能な最新バージョンに更新され、これによってイメージがアップグレードされますが、この理由は、upgradectrl パッケージの pkg.depend.install-hold 設定により、upgradectrl パッケージが更新されるときに pkg:/entire パッケージが更新されるためです。イメージは、新しい upgradectrl 制約パッケージで指定されている pkg:/entire 制約パッケージのバージョンにアップグレードされます。

$ pkg update --be-name s11u1_10
            Packages to remove:   1
            Packages to update: 186
           Mediators to change:   1
       Create boot environment: Yes
Create backup boot environment:  No

Planning linked: 0/1 done; 1 working: zone:z1
Linked image 'zone:z1' output:
|  Packages to remove:  1
| Packages to install:  3
|  Packages to update: 73
| Mediators to change:  1
|  Services to change:  3
`
Planning linked: 1/1 done
DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
Completed                            187/187   16139/16139  507.9/507.9  562k/s

Downloading linked: 0/1 done; 1 working: zone:z1
Downloading linked: 1/1 done
PHASE                                          ITEMS
Removing old actions                       1473/1473
Installing new actions                     3451/3451
Updating modified actions                16378/16378
Updating package state database                 Done 
Updating package cache                       187/187 
Updating image state                            Done 
Creating fast lookup database                   Done 
Reading search index                            Done 
Building new search index                    851/851 
Executing linked: 0/1 done; 1 working: zone:z1
Executing linked: 1/1 done

A clone of s11u1_0 exists and has been updated and activated.
On the next boot the Boot Environment s11u1_10 will be
mounted on '/'.  Reboot when ready to switch to this updated BE.

現在の BE が変更されていないこと、および新しい BE に更新済みパッケージが含まれていることを確認します。

$ pkg list entire upgradectrl
NAME (PUBLISHER)                                  VERSION                    IFO
entire                                            0.5.11-0.175.1.0.0.24.2    i--
upgradectrl (site)                                1.0                        i--
$ beadm mount s11u1_10 /mnt
$ pkg -R /mnt list entire upgradectrl
NAME (PUBLISHER)                                  VERSION                    IFO
entire                                            0.5.11-0.175.1.10.0.6.0    i--
upgradectrl (site)                                1.10                       i--
$ beadm unmount s11u1_10