Bart Smaalders、Alta Elstad著
2013年12月公開
Oracle Solaris 11 Image Packaging Systemは、サーバーのアップロードが可能なオペレーティング・システムのバージョンを制御するための各種手法を提供します。その1つの手法が、カスタム結合パッケージの提供です。
|
結合パッケージとは、インストール可能な他のパッケージのバージョンを指定するパッケージのことです。結合パッケージによって、その結合パッケージのincorporate
依存関係パッケージをインストールする場合に、依存関係のあるパッケージの規定バージョンのみがインストール可能であるということが保証されます。管理者は独自のカスタム結合パッケージを作成して、必要な制約を指定できます。カスタム結合機能を使用してインストール可能なソフトウェアのバージョンを制御することで、複数のパッケージ・リポジトリを維持管理しなくても、異なるマシンにインストールされたさまざまなバージョンのOracle Solarisを容易に維持管理できます。各イメージにより、異なるバージョンのアップグレード制御用のカスタム結合パッケージをインストールできます。すべてのシステムが、いずれかのシステムで必要となるソフトウェアに関するすべてのバージョンを格納した同じパッケージ・リポジトリを共有します。
この記事の例では、Oracle Solaris 11.1が新たにインストールされたシステムを使用します。solaris
パブリッシャの元の場所は、Oracle Solarisサポート・リポジトリです。このリポジトリにはOracle Solaris 11.1のリリース以降の多数の更新プログラムが含まれます。この例の企業のIT部門は最新のサポート更新プログラムについてまだ認定しておらず、パッケージ・リポジトリから入手可能な最新の更新プログラムではなく、同社の環境で認定されている最新の更新プログラムにのみ管理者がアップグレードできるように制限をかけようとしています。
イメージ内にインストールできるコア・オペレーティング・システム・パッケージのバージョンは、pkg:/entire
結合パッケージによって制御します。システムのアップグレードを制御するには、pkg:/entire
パッケージの特定のバージョンをincorporate
依存関係として指定するパッケージを作成します。
次の例は、あるカスタム結合パッケージのマニフェスト(upgradectrl.p5m
)です。このカスタム結合パッケージは、インストール可能なpkg:/entire
パッケージのバージョンを制御します。このマニフェストの設定の一部について、下で説明します。
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
upgradectrl
パッケージを更新する場合に、pkg:/entire
パッケージも自動的に更新されます。parent
依存関係の説明も参照してください。pkg://solaris/entire
パッケージがすでにインストールされているか、この同じ操作でインストールできる場合にのみ、upgradectrl
パッケージをインストールできます。pkg://solaris/entire
パッケージをインストールする必要があります。指定しているバージョン精度の桁数によっては、複数のバージョンがincorporate
依存関係を満たすこともあります。この例では、0.175.1.0
はOracle Solaris 11.1 SRU 0を表します。このアップグレード制御パッケージによって、システムは新たにインストールしたOracle Solaris 11.1バージョンのまま維持され、サポート更新プログラムは含まれません。ただし、このアップグレード制御パッケージによって、pkg:/entire
結合による制約を受けないパッケージの更新が可能です。upgradectrl
パッケージをローカルのファイルベース・リポジトリにパブリッシュします。このリポジトリは、この新しいパッケージの開発およびテストに使用します。汎用のリポジトリを作成する場合は、リポジトリ用の個別のファイル・システムを作成するなどの追加手順を実行することをお勧めします。汎用のパッケージ・リポジトリの作成について詳しくは、Oracle Solaris 11.1パッケージ・リポジトリのコピーおよび作成を参照してください。
システム上に開発用のパッケージ・リポジトリを作成します。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:20131120T010105Z PUBLISHED
リポジトリのデフォルト・パブリッシャがこのパッケージのFMRIに適用されている点に注意してください。
リポジトリを調査して、パッケージがパブリッシュされたことを確認します。
$ pkgrepo -s myrepo list PUBLISHER NAME O VERSION site upgradectrl 1.0,5.11:20131120T010105Z $ pkg list -vg myrepo FMRI IFO pkg://site/upgradectrl@1.0,5.11:20131120T010105Z ---
このパッケージを、共有の場所の別の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
リポジトリ内のパッケージと、このパッケージが結合する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
Image Packaging Systemパッケージの作成と送信の詳細については、Oacle Solaris 11.1でのImage Packaging Systemを使用したソフトウェアのパッケージ化および配布の"パッケージの作成および発行"の項を参照してください。
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/
アップグレード制御パッケージをインストールします。この例では、インストールされているpkg:/entire
バージョンが、アップグレード制御パッケージに結合されるバージョンと同じであるため、変更はほとんど必要ありません。
$ 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
結合パッケージのバージョンが更新されます。補足情報として、アップグレード制御パッケージのバージョンは、pkg:/entire
パッケージの更新後のバージョンと一致します。
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 /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 $ 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. $ 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
その他の参考資料:
Bart SmaaldersはOracle Solaris Core OSグループのシニア・エンジニアであり、Image Packaging Systemの開発リーダーです。
Alta Elstadは、Oracle Solaris 11のパッケージングをサポートするテクニカル・ライターです。
リビジョン1.0、2013年12月06日 |