ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 での Image Packaging System を使用したソフトウェアのパッケージ化および配布 Oracle Solaris 11.1 Information Library (日本語) |
ゾーンとパッケージ化を検討する場合は、2 つの問題を解決する必要があります。
パッケージ内のすべてのものに大域ゾーンと非大域ゾーンの間の境界を越えるインタフェースがあるか。
そのパッケージのどこまでを非大域ゾーンにインストールするか。
pkgA がカーネルとユーザーランドの両方の機能を配布し、そのインタフェースの両側がそれに合わせて更新される必要がある場合、pkgA が非大域ゾーンで更新されたときは必ず、pkgA がインストールされているほかのすべてのゾーンでも pkgA が更新される必要があります。
この更新が正しく行われるようにするには、pkgA の parent 依存関係を使用します。単一のパッケージがインタフェースの両側を配布する場合、feature/package/dependency/self への parent 依存関係は、大域ゾーンと非大域ゾーンに同じバージョンのパッケージが含まれるようにし、インタフェース間でバージョンスキューが発生するのを防ぎます。
また、parent 依存関係はそのパッケージが非大域ゾーンにある場合にそれが大域ゾーンにも存在するようにします。
インタフェースが複数のパッケージに及ぶ場合、そのインタフェースの非大域ゾーン側を含むパッケージには、そのインタフェースの大域ゾーン側を配布するパッケージへの parent 依存関係を含める必要があります。parent 依存関係については、「依存関係タイプ」でも説明されています。
パッケージを非大域ゾーンにインストールするときにパッケージのすべてをインストールする場合は、そのパッケージが正しく機能できるようにするために何か行う必要はありません。しかし、パッケージの顧客にとっては、パッケージ作成者がゾーンへのインストールをきちんと考慮し、このパッケージがゾーンで機能できると結論づけたことがわかっていると安心できることがあります。このような理由から、パッケージ機能が大域ゾーンと非大域ゾーンの両方にあることを明示的に記述するようにしてください。これを行うには、次のアクションをマニフェストに追加します。
set name=variant.opensolaris.zone value=global value=nonglobal
非大域ゾーンにインストールできる内容がパッケージにない場合 (カーネルモジュールやドライバのみを配布するパッケージなど)、そのパッケージでそれを非大域ゾーンにインストールできないことを明記するようにします。これを行うには、次のアクションをマニフェストに追加します。
set name=variant.opensolaris.zone value=global
パッケージの一部ではあるがすべてではない内容を非大域ゾーンにインストールできる場合は、次の手順を実行します。
次の set アクションを使用して、そのパッケージを大域ゾーンと非大域ゾーンの両方にインストールできることを記述します。
set name=variant.opensolaris.zone value=global value=nonglobal
大域ゾーンにのみ、または非大域ゾーンにのみ関係があるアクションを特定します。大域ゾーンにのみ関係があるアクションに次の属性を割り当てます。
variant.opensolaris.zone=global
非大域ゾーンにのみ関係があるアクションに次の属性を割り当てます。
zone:variant.opensolaris.zone=nonglobal
パッケージに parent 依存関係が含まれていたり、大域ゾーンと非大域ゾーンで異なる要素が含まれている場合は、そのパッケージが非大域ゾーンと大域ゾーンで予想どおりに動作していることを確認するためのテストを実行します。
パッケージにそれ自身への parent 依存関係が含まれている場合、大域ゾーンではそのパッケージをその起点の 1 つとして配布するリポジトリを構成する必要があります。そのパッケージをまず大域ゾーンにインストールし、次にテストのために非大域ゾーンにインストールします。