ソフトウェアには、オプションのコンポーネントや、相互に排他的なコンポーネントが含まれることがあります。オプションのコンポーネントの例には、ロケールやドキュメントがあります。相互に排他的なコンポーネントの例には、SPARC バイナリと x86 バイナリや、デバッグバイナリと非デバッグバイナリなどがあります。IPS では、オプションのコンポーネントをファセットと呼び、相互に排他的なコンポーネントをバリアントと呼びます。
ファセットとバリアントは、イメージに設定される特殊プロパティーです。ファセットとバリアントは、パッケージマニフェスト内のアクションに設定されるタグでもあります。アクションのファセットおよびバリアントタグの値とイメージに設定されたファセットおよびバリアントの値の比較により、そのパッケージアクションがインストール可能かどうかを判別します。たとえば、イメージ内で特定のロケールファセットを false に設定した場合、そのファセットを指定しているファイルアクションはどれもインストールされず、そのファセットを指定している現在インストール済みのファイルアクションはアンインストールされます。
ほとんどのバリアントには任意の値を設定できます。アクションに設定されるファセットタグは、値 true のみを持つことができます。イメージに設定されるファセットプロパティーは、値 true または false のみを持つことができます。
次のアルゴリズムは、イメージに設定されたファセットとバリアントが、特定のアクションがインストールされるかどうかに影響するしくみを示しています。
ファセットまたはバリアントタグのないアクションは常にインストールされます。
ファセットタグのあるアクションは、イメージ上のタグに一致するすべてのファセットまたはファセットパターンが false に設定されていないかぎり、インストールされます。いずれかのファセットが true に設定されているか、明示的に設定されていない (true はデフォルト) 場合、アクションがインストールされます。
バリアントタグのあるアクションは、すべてのバリアントタグの値がイメージに設定されている値と同じ場合にのみインストールされます。
ファセットタグとバリアントタグの両方があるアクションは、ファセットとバリアントの両方でアクションのインストールが許可されている場合にインストールされます。
イメージに設定されているファセットとバリアントの値を表示または変更するには、オプションのコンポーネントのインストールの制御を参照してください。