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

印刷ビューの終了

更新: 2016 年 11 月
 
 

相互に排他的なソフトウェアコンポーネント

バリアントは、パッケージ内の次の 2 つの場所に出現します。

  • set アクションはバリアントの名前を指定し、このパッケージに適用される値を定義します。

  • set アクションに指定されたバリアント値のサブセットに対してのみインストールできるアクションにはどれも、そのバリアントの名前と、このアクションがインストールされるときの値を指定するタグが含まれています。

相互に排他的なコンポーネントの 1 つの例はシステムアーキテクチャーです。アクションには、さまざまなバリアント名の複数のタグを含めることができます。たとえば、1 つのパッケージに SPARC と x86 の両方のデバッグバイナリと非デバッグバイナリの両方を含めることができます。

バリアントには、その名前と使用可能な値のリストの 2 つの部分があります。pkg variant -v コマンドは、インストール済みパッケージに設定できるすべてのバリアント値を表示します。

$ pkg variant -v
VARIANT                   VALUE
arch                      i386
arch                      sparc
debug.osnet               false
debug.osnet               true
opensolaris.zone          global
opensolaris.zone          nonglobal

IPS は、異なるアーキテクチャー用のアクションに異なるバリアントタグ値を指定することによって、単一パッケージ内で複数のアーキテクチャーをサポートします。バリアントタグは、アーキテクチャー間で異なるすべてのアクションに適用されます。SPARC および x86 の両方に提供されるコンポーネントはバリアントタグを受け取りません。たとえば、シンボリックリンク /var/ld/64 を配布するパッケージには次の定義を含めることができます。

set name=variant.arch value=sparc value=i386
dir group=bin mode=0755 owner=root path=var/ld
dir group=bin mode=0755 owner=root path=var/ld/amd64 variant.arch=i386
dir group=bin mode=0755 owner=root path=var/ld/sparcv9 variant.arch=sparc
link path=var/ld/32 target=.
link path=var/ld/64 target=sparcv9 variant.arch=sparc
link path=var/ld/64 target=amd64 variant.arch=i386

相互に排他的なもう 1 つのコンポーネントは大域ゾーンまたは非大域ゾーンです。カーネルコンポーネントは通常は非大域ゾーンに含まれません。カーネルコンポーネントが非大域ゾーンにインストールされるのを防ぐために、opensolaris.zone バリアントタグを値をそれらの各アクションに適用し、値を global に設定します。

pkgmogrify 規則を使用して、発行中にマニフェストにバリアントタグを適用します。pkgmogrify コマンドの使用方法については、プログラムによるパッケージマニフェストの変更で詳しく説明しています。次に、pkgmerge を使用して SPARC および x86 ビルドからのパッケージをマージします。pkgmerge コマンドは、必要に応じて、同時に複数の異なるバリアントにわたってマージします。詳細は、pkgmogrify(1) および pkgmerge(1) のマニュアルページを参照してください。

不明なバリアントプロパティー値は、デフォルトでイメージ内で false です。したがって、新しいバリアントタグ名を導入する場合、そのバリアントの値は true または false のみに設定できます。アクションのバリアントタグを true に設定し、そのアクションをインストールするために、管理者に pkg change-variant コマンドを使用してイメージ内のバリアントプロパティーの値を true に変更するよう通知します。

名前が variant.debug. で始まるバリアントは、デフォルトでイメージ内で false です。ユーザーは、コンポーネントのデバッグバージョンを用意し、それらのコンポーネントにカスタムの variant.debug. バリアントをタグ付けできます。


注 -  バリアントはイメージごとに設定されます。そのソフトウェアの適切な解決に固有のバリアント名を選択してください。