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(/.+)?,该表达式与 opt 下包含 man 子目录的所有路径相匹配。将以下修改的转换保存到 /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 清单包含以下三个与手册页相关的操作:
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