ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11.1 ソフトウェアパッケージの追加および更新 Oracle Solaris 11.1 Information Library (日本語) |
ソフトウェアには、オプションのコンポーネントや、相互に排他的なコンポーネントが含まれることがあります。オプションのコンポーネントの例には、ロケールやドキュメントがあります。相互に排他的なコンポーネントの例には、SPARC バイナリと x86 バイナリや、デバッグバイナリと非デバッグバイナリなどがあります。IPS では、オプションのコンポーネントをファセット、相互に排他的なコンポーネントをバリアントと呼びます。
ファセットとバリアントはイメージに設定される特殊なプロパティーであり、パッケージ内のアクションに設定されるタグです。ほとんどのバリアントタグは、さまざまな値を持つことができます。アクションに設定されるファセットタグは、値 true のみを持つことができます。アクションのファセットおよびバリアントタグの値とイメージに設定されたファセットおよびバリアントの値の比較により、そのパッケージアクションがインストール可能かどうかを判別します。たとえば、特定のロケールファセットを false に設定した場合、そのファセットを指定しているファイルやほかのアクションはどれもインストールされず、そのファセットを指定している現在インストール済みのファイルはアンインストールされます。
イメージに設定されているファセットとバリアントの現在の値を表示するには、pkg facet コマンドと pkg variant コマンドを使用します。イメージに設定されているファセットとバリアントの値を変更するには、pkg change-facet コマンドと pkg change-variant コマンドを使用します。pkg(1) のマニュアルページと下の例を参照してください。
各ファセットタグおよびバリアントタグには名前と値があります。1 つのアクションに複数のファセットタグおよびバリアントタグを付けることができます。複数のファセットタグやバリアントタグが付くコンポーネントの例として、開発者によって使用されるアーキテクチャー固有のヘッダーファイルや SPARC 大域ゾーン専用のコンポーネントがあります。
バリアントタグの例は variant.arch=sparc です。ファセットタグの例は facet.devel=true です。ファセットとバリアントは、facet. や variant. を先頭に付けずに参照されることがよくあります。
ファセットはブール型です。それらには true (有効) または false (無効) のみ設定できます。デフォルトで、イメージ内のすべてのファセットは、true に設定されていると見なされます。アクションのファセットタグの値には true のみを指定すべきであり、それ以外の値では動作が不確定になります。イメージに設定されるファセットは、doc.man などの完全なファセットか、locale.* などのパターンになります。この柔軟性は、ファセット名前空間の一部を無効にし、その中の個々のファセットのみを有効にする場合に役立ちます。たとえば、次の例に示すように、すべてのロケールを無効にしてから、1 つか 2 つの特定のロケールのみを有効にすることができます。
$ pfexec pkg change-facet 'locale.*=false' [output about packages being updated] $ pfexec pkg change-facet locale.en_US=true [output about packages being updated]
ほとんどのバリアントは任意の数の値を設定できます。たとえば、arch バリアントには、i386、sparc、ppc、arm、またはディストリビューションがサポートしているどのようなアーキテクチャーでも設定できます。(Oracle Solaris では i386 と sparc のみが使用されます。)例外は debug バリアントです。debug バリアントは、true または false のみ設定でき、ほかの値では動作が不定になります。ファイルアクションに非デバッグバージョンとデバッグバージョンの両方がある場合、次の例に示すように、両方のバージョンに該当する debug バリアントが明示的に設定されている必要があります。
file group=sys mode=0644 overlay=allow owner=root \ path=etc/motd pkg.csize=115 pkg.size=103 preserve=true \ variant.debug.osnet=true file group=sys mode=0644 overlay=allow owner=root \ path=etc/motd pkg.csize=68 pkg.size=48 preserve=true \ variant.debug.osnet=false
バリアントを使用するパッケージをインストールするために、バリアント値をイメージに設定する必要があります。arch および zone バリアントは、イメージを作成し、その初期コンテンツをインストールするプログラムによって設定されます。イメージ内の debug.* バリアントはデフォルトで false です。
次のアルゴリズムは、イメージに設定されたファセットとバリアントが、特定のアクションがインストールされるかどうかに影響するしくみを示しています。
ファセットまたはバリアントタグのないアクションは常にインストールされます。
ファセットタグのあるアクションは、イメージ上のタグに一致するすべてのファセットまたはファセットパターンが false に設定されていないかぎり、インストールされます。いずれかのファセットが true に設定されているか、明示的に設定されていない (true はデフォルト) 場合、アクションがインストールされます。
バリアントタグのあるアクションは、すべてのバリアントタグの値がイメージに設定されている値と同じ場合にのみインストールされます。
ファセットタグとバリアントタグの両方があるアクションは、ファセットとバリアントの両方でアクションのインストールが許可されている場合にインストールされます。
独自のファセットおよびバリアントタグを作成できます。Oracle Solaris では、次のタグが一般に使用されます。
|
次のリストに、Oracle Solaris で使用される小さなファセットタグの例を示します。
facet.devel facet.doc facet.doc.html facet.doc.info facet.doc.man facet.doc.pdf facet.locale.de facet.locale.en_GB facet.locale.en_US facet.locale.fr facet.locale.ja_JP facet.locale.zh_CN
現在のイメージに設定されているバリアントとファセットの値を表示し、現在のイメージのバリアントとファセットを変更できます。バリアントとファセットを変更すると、多数のパッケージが更新され、新しい BE が必要になることがあります。変更する前に、どのような変更が行われるかを確認するには、-nv を使用します。
設定されているバリアントの値を表示するには、pkg variant コマンドを使用します。
/usr/bin/pkg variant [-H] [variant_nsmr ...]
$ pkg variant VARIANT VALUE variant.opensolaris.zone global variant.arch i386 $ pkg variant -H variant.arch variant.arch i386
バリアントの値を変更するには、pkg change-variant コマンドを使用します。
/usr/bin/pkg change-variant [-nvq] [-C n] [-g path_or_uri ...] [--accept] [--licenses] [--no-be-activate] [--no-backup-be | --require-backup-be] [--backup-be-name name] [--deny-new-be | --require-new-be] [--be-name name] variant_name=value ...
次のコマンドは、多数のパッケージが影響を受けるため、大量の出力が生成されます。新しい BE はデフォルトで作成されませんが、バックアップ BE が作成される可能性があります。BE が作成される状況については、「ブート環境ポリシーイメージのプロパティー」を参照してください。
大域ゾーンと同時に n 個の非大域ゾーンのバリアントを変更するには、-C オプションを使用します。-C オプションの使用例については、「複数の非大域ゾーンの同時更新」を参照してください。
-n オプションを使用すると、実際の変更を行わずに、この操作を -n なしで実行した場合に何が変更されるかを確認できます。
$ pfexec pkg change-variant -nv --accept 'variant.debug.*=true' Packages to update: 851 Variants/Facets to change: 3 Estimated space available: 49.88 GB Estimated space to be consumed: 270.57 MB Create boot environment: No Create backup boot environment: Yes Rebuild boot archive: No Changed variants/facets: variant variant.debug.*: true facet facet.locale.en_US: None facet facet.locale.*: None Changed packages: solaris ...
設定されているファセットの値を表示するには、pkg facet コマンドを使用します。
/usr/bin/pkg facet [-H] [facet_name ...]
$ pkg facet FACETS VALUE facet.locale.en_US True facet.locale.en True facet.locale.* False $ pkg facet -H 'facet.locale.*' facet.locale.* False
ファセットの値を変更するには、pkg change-facet コマンドを使用します。
/usr/bin/pkg change-facet [-nvq] [-C n] [-g path_or_uri ...] [--accept] [--licenses] [--no-be-activate] [--no-backup-be | --require-backup-be] [--backup-be-name name] [--deny-new-be | --require-new-be] [--be-name name] facet_name=[True|False|None] ...
大域ゾーンと同時に n 個の非大域ゾーンのファセットを変更するには、-C オプションを使用します。-C オプションの使用例については、「複数の非大域ゾーンの同時更新」を参照してください。
-n オプションを使用すると、実際の変更を行わずに、この操作を -n なしで実行した場合に何が変更されるかを確認できます。
ファセットの値を None に設定すると、ファセットの仕様が現在のイメージから削除されます。
次のコマンドは、多数のパッケージが影響を受けるため、大量の出力が生成されます。この操作には、長い時間を必要とする可能性があり、このイメージとパッケージリポジトリ間で大量のネットワークトラフィックが発生する可能性があります。新しい BE はデフォルトで作成されませんが、バックアップ BE が作成される可能性があります。BE が作成される状況については、「ブート環境ポリシーイメージのプロパティー」を参照してください。
$ pfexec pkg change-facet -nv 'facet.locale.*=true' Packages to update: 851 Variants/Facets to change: 1 Estimated space available: 49.88 GB Estimated space to be consumed: 3.13 GB Create boot environment: No Create backup boot environment: Yes Rebuild boot archive: No Changed variants/facets: facet facet.locale.*: True Changed packages: solaris ...