イメージにインストール可能なコアのオペレーティングシステムパッケージのバージョンは、pkg:/entire incorporation パッケージによって制御されます。システムのアップグレードを制御するには、特定バージョンの pkg:/entire パッケージを incorporate 依存関係として指定するパッケージを作成します。
次の例は、インストール可能な pkg:/entire パッケージのバージョンを制御するカスタム incorporation パッケージに対する 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 update upgradectrl コマンドを入力すると、pkg:/entire パッケージも自動的に更新されます。
このパッケージは、大域ゾーンと非大域ゾーンの両方にインストールできます。parent 依存関係の説明も参照してください。
このパッケージは、SPARC と x86 の両方のシステムにインストールできます。
このパッケージは、大域ゾーンにすでにインストール済みの場合に限り、非大域ゾーンにインストールできます。
upgradectrl パッケージは、pkg://solaris/entire パッケージがすでにインストールされているか、これと同じ操作でインストール可能である場合に限りインストールできます。
pkg://solaris/entire パッケージを指定のバージョンでインストールする必要があります。指定された精度の桁数によっては、複数のバージョンが incorporate 依存関係を満たす場合があります。この例では、0.175.1.0 は Oracle Solaris 11.1 SRU 0 を指定します。このアップグレード制御パッケージは、サポート更新のない Oracle Solaris 11.1 にシステムを維持します。ただし、このアップグレード制御パッケージは、pkg:/entire incorporation による制約を受けないパッケージの更新を許可します。
upgradectrl パッケージをファイルベースのローカルリポジトリに公開します。このリポジトリは、この新しいパッケージを開発およびテストするためのものです。一般的な用途のリポジトリを作成する場合、リポジトリ用の別個のファイルシステムを作成するなどの追加のステップを含める必要があります。一般的な用途のパッケージリポジトリを作成することについては、Oracle Solaris 11.2 パッケージリポジトリのコピーと作成 を参照してください。
システム上にパッケージ開発リポジトリを作成します。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 0 VERSION site upgradectrl 1.0,5.11:20131104T072336Z $ pkg list -vg myrepo FMRI IFO pkg://site/upgradectrl@1.0,5.11:20131104T072336Z ---
パッケージを、共有されている場所にある別個の ZFS ファイルシステム内のローカルリポジトリに提供します。
$ pkgrecv -s myrepo -d /export/IPSpkgrepos/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 /export/IPSpkgrepos/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 パッケージの作成と提供についての詳細は、Oracle Solaris 11.2 での Image Packaging System を使用したソフトウェアのパッケージ化と配布 のパッケージの作成および発行を参照してください。
site パブリッシャーの起点を設定します。システムリポジトリはこの情報で自動的に更新されるため、非大域ゾーンでは site パブリッシャーからパッケージにアクセスできるようになります。
$ pkg set-publisher -g /export/IPSpkgrepos/Solaris site $ pkg publisher PUBLISHER TYPE STATUS P LOCATION solaris origin online F https://pkg.oracle.com/solaris/support/ site origin online F file:///export/IPSpkgrepos/Solaris/