ファセットとアクチュエータについては、Chapter 5, バリエーションの許可およびChapter 7, パッケージインストールの一環としてのシステム変更の自動化で詳しく説明されています。ファセットは、必須ではないがオプションでインストールできるアクションを示します。アクチュエータは、関連するアクションがインストール、更新、または削除されたときに発生する必要があるシステム変更を指定します。
このサンプルパッケージは、マニュアルページを opt/mysoftware/man/man1 に配布します。このセクションでは、マニュアルページがオプションであることを示すファセットを追加する方法について説明します。ユーザーは、そのパッケージのマニュアルページ以外のすべてをインストールすることを選択できます。(ユーザーがそのファセットを false に設定した場合、マニュアルページの file アクションがそのファセットでタグ付けされていれば、どのパッケージからもマニュアルページはインストールされません。)
マニュアルページをインデックスに含めるには、そのパッケージがインストールされるときに svc:/application/man-index:default SMF サービスを再起動する必要があります。このセクションでは、restart_fmri アクチュエータを追加してそのタスクを実行する方法について説明します。man-index サービスは、マニュアルページを含むディレクトリへのシンボリックリンクを /usr/share/man/index.d で探して、各リンクのターゲットを、それがスキャンするディレクトリのリストに追加します。マニュアルページをインデックスに含めるために、このサンプルパッケージには /usr/share/man/index.d/mysoftware から /opt/mysoftware/man へのリンクが含まれています。このリンクとこのアクチュエータを含めることは、ソフトウェアの自己アセンブリで説明されている、Oracle Solaris OS のパッケージ化全体にわたって使用される自己アセンブリのよい例です。
使用できる一連の pkgmogrify 変換は /usr/share/pkg/transforms で入手できます。これらの変換は Oracle Solaris OS のパッケージ化に使用され、Chapter 6, プログラムによるパッケージマニフェストの変更で詳しく説明されています。
ファイル /usr/share/pkg/transforms/documentation には、この例でマニュアルページのファセットを設定したり、man-index サービスを再起動したりするために必要な変換と同じような変換が含まれています。この例はマニュアルページを /opt に配布するため、documentation 変換は下記のように変更される必要があります。これらの変更された変換には正規表現 opt/.+/man(/.+)? が含まれており、これは man サブディレクトリを含む、opt のすぐ下のすべてパスに一致します。次の変更された変換を /tmp/doc-transform に保存します。
<transform dir file link hardlink path=opt/.+/man(/.+)? -> \ default facet.doc.man true> <transform file path=opt/.+/man(/.+)? -> \ add restart_fmri svc:/application/man-index:default>
次のコマンドを使用して、これらの変換をマニフェストに適用します。
$ pkgmogrify mypkg.p5m.3.res /tmp/doc-transform | pkgfmt > mypkg.p5m.4.res
入力用の mypkg.p5m.3.res マニフェストには、次の 3 つのマニュアルページ関連アクションが含まれています。
dir path=opt/mysoftware/man owner=root group=bin mode=0755 dir path=opt/mysoftware/man/man1 owner=root group=bin mode=0755 file opt/mysoftware/man/man1/mycmd.1 path=opt/mysoftware/man/man1/mycmd.1 \ owner=root group=bin mode=0644
変換の適用後、出力用の mypkg.p5m.4.res マニフェストには次の変更されたアクションが含まれています。
dir path=opt/mysoftware/man owner=root group=bin mode=0755 facet.doc.man=true dir path=opt/mysoftware/man/man1 owner=root group=bin mode=0755 \ facet.doc.man=true file opt/mysoftware/man/man1/mycmd.1 path=opt/mysoftware/man/man1/mycmd.1 \ owner=root group=bin mode=0644 \ restart_fmri=svc:/application/man-index:default facet.doc.man=true