在 Oracle® Solaris 11.2 中使用映像包管理系统打包和交付软件

退出打印视图

更新时间: 2014 年 7 月
 
 

添加需要的任何侧面或执行器

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 服务所需的转换。由于此示例将手册页交付到 /optdocumentation 转换必须按如下所示进行修改。这些修改的转换包括正则表达式 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

提示  -  出于效率考虑,在评估相关项前,初次添加元数据时可能已经添加了这些转换。