发布前的最后一步是对清单运行 pkglint(1),以便发现在发布和测试前可以识别的错误。pkglint 可以发现的某些错误在发布时或用户尝试安装软件包时也会发现,但是您当然希望在软件包设计期间尽可能早地识别错误。
pkglint 报告的错误示例包括:
交付的文件已经属于其他软件包。
有关共享、引用计数操作的元数据(如目录)存在不一致情况。此错误的示例在生成软件包清单结尾有介绍。
使用 pkglint -L 命令可显示 pkglint 所执行检查的完整列表。pkglint(1) 手册页中提供了有关如何启用、禁用和绕过特定检查的详细信息。该手册页还详细介绍了如何扩展 pkglint 以运行额外检查。
可以使用以下模式之一运行 pkglint:
直接针对软件包清单运行。此模式通常足以快速地检查清单的有效性。
针对软件包清单运行,同时引用软件包系统信息库。发布到系统信息库前,至少需要使用该模式一次。
通过引用系统信息库,pkglint 可以执行额外检查以确保软件包和系统信息库中的其他软件包之间可以很好地交互。
以下输出显示了示例清单的问题:
$ pkglint mypkg.p5m.4.res Lint engine setup... Starting lint run... WARNING pkglint.action005.1 obsolete dependency check skipped: unable to find dependency pkg:/system/library@0.5.11-0.175.2.0.0.18.0 for pkg:/mypkg@1.0,5.11-0
此警告对于此示例可接受。pkglint.action005.1 警告显示 pkglint 无法找到此示例软件包依赖的名为 pkg:/system/library@0.5.11-0.175.2.0.0.18.0 的软件包。该相关项软件包在软件包系统信息库中,但无法找到,因为调用 pkglint 时仅使用清单文件作为参数。
在以下命令中,-r 选项引用了一个包含相关项软件包的系统信息库。-c 选项指定了一个本地目录,用于缓存来自 lint 和引用系统信息库的软件包元数据:
$ pkglint -c ./solaris-reference -r http://pkg.oracle.com/solaris/release mypkg.p5m.4.res