本体に含まれているソフトウェアの一部はオプションであり、一部のユーザーはそれらをインストールする必要がない場合があります。例として、異なるロケール用のローカライズファイル、マニュアルページとその他のドキュメント、開発者または DTrace ユーザーにのみ必要なヘッダーファイルなどがあげられます。
従来、オプションの内容は別個のパッケージで配布されていました。管理者は、これらのオプションのパッケージをインストールすることでオプションの内容をインストールしました。この解決方法の問題の 1 つは、管理者が使用可能なパッケージのリストを調べて、オプションのパッケージを見つけ出し、インストールする必要があることです。
IPS はファセットを使用して、オプションのパッケージ内容を配布します。ファセットはバリアントに似ています: 各ファセットには名前と値があり、アクションにはさまざまなファセット名の複数のタグを含めることができます。
イメージ内で facet.debug. または facet.optional. で始まるすべてのファセットプロパティーのデフォルト値は、false です。その他のすべてのファセットプロパティーのデフォルト値は true です。
パッケージ化されたアクションで、ファセットタグの値は、true または all のいずれかとして指定できます。
all の値を持つファセットタグのあるアクションは、all の値を持つそのアクションのいずれかのファセットが、イメージ内に true の値を持つ場合のみインストールされます。
true の値を持つファセットタグのあるアクションは、true の値を持つそのアクションのいずれかのファセットが、イメージ内に true の値を持つ場合のみインストールされます。
正規表現を使用してさまざまなタイプのファイルを一致させることで、ファセットタグをパッケージマニフェストに追加するには、pkgmogrify コマンドを使用します。pkgmogrify コマンドの使用方法については、プログラムによるパッケージマニフェストの変更で詳しく説明しています。
パッケージ化されたアクションに設定するために使用可能なファセットのリストを生成するには、pkg facet -a コマンドを使用して、イメージに明示的に設定されたすべてのファセットとインストール済みパッケージに設定されたすべてのファセットの値を表示します。
ソフトウェアに新しいファセットを導入する場合、そのアクションがインストールされるかどうかは、ファセットに選択した名前と、そのアクションに設定されているほかのファセットによって異なります。新しいファセットがアクションに設定された唯一のファセットである場合、アクションは次のようにインストールされます。
ファセットに facet.debug.mysoftware または facet.optional.mycomponent という名前を付けた場合、ユーザーがファセットイメージプロパティーの値を true に設定している場合にのみアクションがインストールされます。
新しいファセットにほかの任意の名前を選択した場合は、ユーザーがファセットイメージプロパティーの値を false に設定していないかぎり、アクションがインストールされます。
オプションのコンポーネントの指定に加えて、制約と凍結に説明するように、facet.version-lock. ファセットタグを使用して、依存関係バージョン制限を指定できます。