Go to main content
Oracle® Solaris 11.3 での Image Packaging System を使用したソフトウェアのパッケージ化と配布

印刷ビューの終了

更新: 2016 年 11 月
 
 

制約と凍結

前述の依存関係タイプを慎重に使用することによって、パッケージのアップグレードを許可する方法を制約できます。

  • incorporate 依存関係により、まとめて更新するサポートされているソフトウェアサーフェスを定義できます。

  • 凍結により、管理者はサーフェスやその他のソフトウェアを特定のバージョンに維持できます。

  • バージョンロックファセットにより、管理者はサーフェスの一部のコンポーネントに対するバージョン制約を無効にできます。

インストール可能なパッケージバージョンの制約

一般に、システムにインストールされた一連のパッケージのサポートやアップグレードはまとめて行われるのが望ましいことです (セット内のパッケージがすべて更新されるか、セット内のパッケージがどれも更新されないかのどちらか)。パッケージをセットとしてこのように扱うには、incorporate 依存関係を使用します。

Oracle Solaris 11.3 ソフトウェアの追加と更新 の カスタム Incorporation のインストールに、インストール可能な pkg:/entire incorporation のバージョンを制約するためのカスタム incorporation の作成例を示します。このセクションの以降の部分では、結合についての一般的な説明を示します。

次の 3 つの部分的なパッケージマニフェストは、pkg-a および pkg-b パッケージと myincorp 結合パッケージの関係を示しています。

次に、pkg-a パッケージマニフェストからの抜粋を示します。

set name=pkg.fmri value=pkg-a@1.0
dir path=opt/tool-a owner=root group=bin mode=0755
depend fmri=myincorp type=require

次に、pkg-b パッケージマニフェストからの抜粋を示します。

set name=pkg.fmri value=pkg-b@1.0
dir path=opt/tool-b owner=root group=bin mode=0755
depend fmri=myincorp type=require

次に、myincorp パッケージマニフェストからの抜粋を示します。

set name=pkg.fmri value=myincorp@1.0
depend fmri=pkg-a@1.0 type=incorporate
depend fmri=pkg-b@1.0 type=incorporate

pkg-a および pkg-b パッケージの両方に、myincorp 結合への require 依存関係が含まれています。myincorp パッケージには、次の方法で pkg-a および pkg-b パッケージを制約する incorporate 依存関係が含まれています。

  • pkg-a および pkg-b パッケージは、最大でもバージョン 1.0 (依存関係に指定されたバージョン番号で定義された精度レベル) にしかアップグレードできません。

  • pkg-a および pkg-b パッケージをインストールする場合、それらはバージョン 1.0 以上である必要があります。

バージョン 1.0 への incorporate 依存関係では、バージョン 1.0.1 や 1.0.2.1 などは許可されますが、バージョン 1.1、2.0、0.9 などは許可されません。incorporate 依存関係を上位バージョンで指定する、更新済みの結合パッケージがインストールされると、pkg-a および pkg-b パッケージはその上位バージョンに更新することを許可されます。

pkg-a および pkg-b パッケージの両方に、myincorp パッケージへの require 依存関係が含まれているため、pkg-a または pkg-b のいずれかがインストールされている場合に結合パッケージがインストールされます。

インストール可能なパッケージバージョンの凍結

前のセクションで、パッケージマニフェストを変更することでパッケージのオーサリングプロセス中に適用される制約について説明しました。管理者は、実行時に制約をシステムに適用することもできます。

pkg freeze コマンドを使用すると、管理者はある特定のパッケージが、現在インストールされているバージョン (タイムスタンプを含む)、またはコマンド行で指定したバージョンから変更されるのを防ぐことができます。この機能は事実上 incorporate 依存関係と同じです。

freeze コマンドの詳細については Oracle Solaris 11.3 ソフトウェアの追加と更新および pkg(1) のマニュアルページを参照してください。

さらに複雑な依存関係をイメージに適用するには、それらの依存関係を含むパッケージを作成してインストールします。

管理者がインストール可能なパッケージバージョンへの制約を緩和できるようにする

管理者は、依存関係のバージョン制約を無効にしなければならない場合があります。version-lock ファセットタグを提供して、管理者がそれらのタグ付き incorporate 依存関係を無効にできるようにします。管理者は、pkg change-facet コマンドを使用して、対応するファセットイメージプロパティーの値を false に設定できます。ファセットタグに関する一般的な情報については、バリエーションの許可を参照してください。

前の例を続けると、おそらく pkg-bpkg-a と関係なく機能できますが、pkg-a を、結合の incorporate 依存関係によって定義された一連のバージョン内にとどめておく必要があります。myincorp パッケージマニフェストには、pkg-b 依存関係の version-lock ファセットタグなど、次の行を含めることができます。慣例的に、version-lock ファセットタグには facet.version-lock.package-name という名前が付けられます。ここで package-name は、その depend アクションの fmri に指定された、バージョンのない名前です。

set name=pkg.fmri value=myincorp@1.0
depend fmri=pkg-a@1.0 type=incorporate
depend fmri=pkg-b@1.0 type=incorporate facet.version-lock.pkg-b=true

デフォルトで、この結合には pkg-b パッケージへの depend アクションが含まれており、pkg-b をバージョン 1.0 に制約しています。この制約は、次のコマンドによって緩和されます。

$ pkg change-facet version-lock.pkg-b=false

このコマンドの実行が成功したあとで、pkg-b パッケージは結合の制約から解放され、必要に応じて上位のバージョンにアップグレードできます。

次の例では、この結合で、java-8-incorporation パッケージをインストールする必要があり、それがバージョン 1.8.0.92.14-0 である必要があることを指定しています。ただし、指定された facet.version-lock ファセットにより、管理者は別のバージョンのインストールを試みることもできます。

depend fmri=consolidation/java-8/java-8-incorporation type=require
depend facet.version-lock.consolidation/java-8/java-8-incorporation=true \
    fmri=consolidation/java-8/java-8-incorporation@1.8.0.92.14-0 type=incorporate

おそらく上位バージョンの java-8-incorporation パッケージもこの結合で動作します。管理者は、pkg change-facet コマンドを使用して、version-lock.consolidation/java-8/java-8-incorporation ファセットプロパティーを false に設定し、結合の更新と別に、java-8-incorporation パッケージの更新を試みることができます。