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

退出打印视图

更新时间: 2014 年 7 月
 
 

评估相关项

使用 pkgdepend(1) 命令可自动生成软件包的相关项。生成的 depend 操作在依赖操作中进行了定义,并在Chapter 4, 指定软件包相关项中有进一步的讨论。

相关项生成由两个单独的步骤组成:

  1. 相关项生成。确定软件依赖的文件。使用 pkgdepend generate 命令。

  2. 相关项解析。确定包含软件所依赖的那些文件的软件包。使用 pkgdepend resolve 命令。

生成软件包相关项


提示  -  请使用 pkgdepend 生成相关项,而不是手动声明 depend 操作。由于软件包内容会随着时间而更改,手动相关项可能不正确或没有必要。例如,当应用程序所依赖的文件移动到其他软件包时,任何手动声明的依赖于先前软件包的相关项对于该相关项都将是不正确的。

如果 pkgdepend 无法完全确定相关项,手动声明某些相关项可能会是必要的。在这种情况下,应该向清单中添加解释性注释。

在以下命令中,-m 选项导致 pkgdepend 在输出中包含整个清单。-d 选项将 proto 目录传递给命令。

$ pkgdepend generate -md proto mypkg.p5m.2 | pkgfmt > mypkg.p5m.3

输出的 mypkg.p5m.3 文件包含以下内容。pkgdepend 实用程序通过 mylib.so.1mycmd 添加了有关对 libc.so.1 的相关项的表示法。无提示地省略了 mycmdmylib.so.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
depend fmri=__TBD pkg.debug.depend.file=libc.so.1 \
    pkg.debug.depend.reason=opt/mysoftware/bin/mycmd \
    pkg.debug.depend.type=elf type=require pkg.debug.depend.path=lib \
    pkg.debug.depend.path=opt/mysoftware/lib pkg.debug.depend.path=usr/lib
depend fmri=__TBD pkg.debug.depend.file=libc.so.1 \
    pkg.debug.depend.reason=opt/mysoftware/lib/mylib.so.1 \
    pkg.debug.depend.type=elf type=require pkg.debug.depend.path=lib \
    pkg.debug.depend.path=usr/lib

解析软件包相关项

为解析相关项,pkgdepend 检查当前安装在用于生成软件的映像中的软件包。缺省情况下,pkgdepend 将输出置于 mypkg.p5m.3.res 中。此步骤需要运行一段时间,因为需要装入有关运行中系统的大量信息。如果希望将此时间分摊到所有的软件包上,可以使用 pkgdepend 实用程序一次性解析多个软件包。一次只对一个软件包运行 pkgdepend 从时间上来看不太高效。

$ pkgdepend resolve -m mypkg.p5m.3

完成后,输出的 mypkg.p5m.3.res 文件包含以下内容。pkgdepend 实用程序将有关依赖于 libc.so.1 的文件相关项的表示法转换为交付该文件的 pkg:/system/library 中的软件包相关项。

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
depend fmri=pkg:/system/library@0.5.11-0.175.2.0.0.18.0 type=require