软件包应该定义以下元数据。有关这些值以及如何设置这些值的更多信息,请参见设置操作。
软件包名称和软件包版本中所介绍的软件包的名称和版本。软件包发布后会自动添加发布者名称,如发布软件包中所示。有关 Oracle Solaris 中版本控制的说明,请参见Oracle Solaris 软件包版本。
软件包内容的描述。
单行描述概要。
该软件包适用的每种体系结构。如果整个软件包可以安装在任何体系结构中,则可以省略 variant.arch。Chapter 5, 允许变量中讨论了生成包含用于不同体系结构的不同组件的软件包。
packagemanager(1) GUI 使用的分组方案。支持的值显示在Appendix A, 对软件包进行分类中。本节中的示例随机指定了一个等级。
此示例还将 link 操作添加到 /usr/share/man/index.d 中,指向 mysoftware 下的 man 目录。添加需要的任何侧面或执行器中进一步介绍了该链接。
请使用 pkgmogrify(1) 编辑生成的清单,而不要直接修改清单。有关使用 Chapter 6, 以编程方式修改软件包清单 修改软件包清单的完整说明,请参见Chapter 6, Modifying Package Manifests Programmatically。
创建以下 pkgmogrify 输入文件以指定要对清单进行的更改。将此文件命名为 mypkg.mog。在此示例中,使用宏定义体系结构,使用正则表达式匹配从清单中删除 /opt 目录。
set name=pkg.fmri value=mypkg@1.0,5.11-0 set name=pkg.summary value="This is an example package" set name=pkg.description value="This is a full description of \ all the interesting attributes of this example package." set name=variant.arch value=$(ARCH) set name=info.classification \ value=org.opensolaris.category.2008:Applications/Accessories link path=usr/share/man/index.d/mysoftware target=/opt/mysoftware/man <transform dir path=opt$->drop>
对 mypkg.p5m.1 清单运行 pkgmogrify(mypkg.mog 已更改):
$ pkgmogrify -DARCH=`uname -p` mypkg.p5m.1 mypkg.mog | pkgfmt > mypkg.p5m.2
输出的 mypkg.p5m.2 文件包含以下内容。path=opt 的 dir 操作已删除,并且 mypkg.mog 中的元数据和链接内容已添加到原始的 mypkg.p5m.1 内容中。
set name=pkg.fmri value=mypkg@1.0,5.11-0 set name=pkg.summary value="This is an example package" set name=pkg.description \ value="This is a full description of all the interesting attributes of this example package." set name=info.classification \ value=org.opensolaris.category.2008:Applications/Accessories set name=variant.arch value=i386 dir path=opt/mysoftware owner=root group=bin mode=0755 dir path=opt/mysoftware/bin owner=root group=bin mode=0755 file opt/mysoftware/bin/mycmd path=opt/mysoftware/bin/mycmd owner=root \ group=bin mode=0644 dir path=opt/mysoftware/lib owner=root group=bin mode=0755 file opt/mysoftware/lib/mylib.so.1 path=opt/mysoftware/lib/mylib.so.1 \ owner=root group=bin mode=0644 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 link path=usr/share/man/index.d/mysoftware target=/opt/mysoftware/man