ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 での Image Packaging System を使用したソフトウェアのパッケージ化および配布 Oracle Solaris 11.1 Information Library (日本語) |
前述したさまざまな depend アクションを慎重に使用することで、パッケージはそのアップグレードが許可される方法を定義できます。
一般に、システムにインストールされた一連のパッケージのサポートやアップグレードはまとめて行われるのが望ましいことです (セット内のパッケージがすべて更新されるか、セット内のパッケージがどれも更新されないかのどちらか)。これが incorporate 依存関係を使用する理由です。
次の 3 つの部分的なパッケージマニフェストは、foo および bar パッケージと myincorp 結合パッケージの関係を示しています。
次に、foo パッケージマニフェストからの抜粋を示します。
set name=pkg.fmri value=foo@1.0 dir path=foo owner=root group=bin mode=0755 depend fmri=myincorp type=require
次に、bar パッケージマニフェストからの抜粋を示します。
set name=pkg.fmri value=bar@1.0 dir path=bar owner=root group=bin mode=0755 depend fmri=myincorp type=require
次に、myincorp パッケージマニフェストからの抜粋を示します。
set name=pkg.fmri value=myincorp@1.0 depend fmri=foo@1.0 type=incorporate depend fmri=bar@1.0 type=incorporate
foo および bar パッケージの両方に、myincorp 結合への require 依存関係が含まれています。myincorp パッケージには、次の方法で foo および bar パッケージを制約する incorporate 依存関係が含まれています。
foo および bar パッケージは、最大でもバージョン 1.0 (依存関係に指定されたバージョン番号で定義された精度レベル) にしかアップグレードできません。
foo および bar パッケージをインストールする場合、それらはバージョン 1.0 以上である必要があります。
バージョン 1.0 への incorporate 依存関係では、バージョン 1.0.1 や 1.0.2.1 などは許可されますが、バージョン 1.1、2.0、0.9 などは許可されません。incorporate 依存関係を上位バージョンで指定する、更新済みの結合パッケージがインストールされると、foo および bar パッケージはその上位バージョンに更新することを許可されます。
foo と bar の両方に myincorp パッケージへの require 依存関係が含まれているため、結合パッケージは常にインストールされる必要があります。
状況によっては、結合の制約を緩めた方がよい場合があります。
おそらく bar は foo と関係なく機能できますが、foo を、結合の incorporate 依存関係によって定義された一連のバージョン内にとどめておく必要があります。
ファセットを使用すると結合の制約を緩めることができ、それによって管理者は特定の incorporate 依存関係を効果的に無効にできるようになります。ファセットについては、第 5 章バリエーションの許可に詳しく説明されています。簡単に言えば、ファセットとはパッケージ内のアクションに適用して、作成者がそれらのアクションをオプションとしてマーク付けできるようにする特別な属性です。
このようにアクションがファセット属性でマーク付けされると、pkg change-facet コマンドを使用して、それらのファセットを含むアクションを有効または無効にすることができます。
一般に、オプションで incorporate 依存関係をインストールするファセットには facet.version-lock.name という名前が付けられます。ここでは、name はその depend アクションを含むパッケージの名前です。
上記の例を使用すると、myincorp パッケージマニフェストには次の行を含めることができます。
set name=pkg.fmri value=myincorp@1.0 depend fmri=foo@1.0 type=incorporate depend fmri=bar@1.0 type=incorporate facet.version-lock.bar=true
デフォルトでは、この結合には bar パッケージへの depend アクションが含まれており、bar をバージョン 1.0 に制約しています。この制約は、次のコマンドによって緩和されます。
# pkg change-facet version-lock.bar=false
このコマンドの実行が成功したあとで、bar パッケージは結合の制約から解放され、必要に応じてバージョン 2.0 にアップグレードできます。
ここまでは、パッケージマニフェストを変更することでパッケージのオーサリングプロセス中に適用される制約について説明してきました。管理者は、実行時に制約をシステムに適用することもできます。
pkg freeze コマンドを使用すると、管理者はある特定のパッケージが、現在インストールされているバージョン (タイムスタンプを含む)、またはコマンド行で指定したバージョンから変更されるのを防ぐことができます。この機能は事実上 incorporate 依存関係と同じです。
freeze コマンドの詳細は、pkg(1) のマニュアルページを参照してください。
さらに複雑な依存関係をイメージに適用するには、それらの依存関係を含むパッケージを作成してインストールします。