跳过导航链接 | |
退出打印视图 | |
手册页第 1 部分:用户命令 Oracle Solaris 11.1 Information Library (简体中文) |
- 映像包管理系统软件包 lint
/usr/bin/pkglint [-c cache_dir] [-r repo_uri] [-p regexp] [-f config_file] [-b build_no] [-v] [-l lint_uri] | manifest ...
/usr/bin/pkglint -L [-v]
pkglint 对一个或多个软件包清单运行一系列检查,并有选择性地引用其他系统信息库。
应该在发布软件包之前,在软件包构建期间使用 pkglint。pkglint 将对清单执行全面的测试,在 pkgsend 或 pkg.depotd 正常操作期间,执行这种测试可能会消耗过多的资源。 pkglint 检查包括对重复操作、缺少的属性和非正常文件权限的测试。
可以在命令行上将用于 lint 的清单作为本地文件的空格分隔列表进行传递,也可以从系统信息库检索清单。
从系统信息库检索清单时,首次运行时 pkglint 将在指定的高速缓存目录中创建并填充 pkg(5) 用户映像。如果提供了 -r 选项,则为引用系统信息库创建名为 cache_dir/ref_image 的用户映像。如果提供了 -l 选项,则为 lint 系统信息库创建名为 cache_dir/lint_image 的用户映像。不会在这些映像中安装任何内容。pkglint 只使用这些映像从系统信息库中检索清单。
pkglint 的后续调用可以重新使用高速缓存目录,并可以省略任何 -r 或 -l 参数。
pkglint 对在高速缓存目录中配置发布者提供有限的支持。使用 pkg 可对这些映像执行更复杂的发布者配置。
pkglint 使软件包作者能够绕过对给定清单或操作进行的检查。其中的属性 pkg.linted 设置为 True 的清单或操作不会为该清单或操作生成任何 lint 输出。
使用 pkglint 检查名称的子字符串可以进行更高粒度的 pkg.linted 设置。例如,设置为 True 的 pkg.linted. check.id 将对给定的清单或操作绕过名称为 check.id 的所有检查。
可通过指定一个 pkglintrc 文件来配置 pkglint 的行为。缺省情况下,pkglint 在 /usr/share/lib/pkg/pkglintrc 和 $HOME/.pkglintrc 中搜索配置选项。使用 -f 选项可以指定其他配置文件。
lint 运行期间,遇到的任何错误或警告将输出到 stderr。
支持以下选项:
显示用法消息。
指定内部版本号,用于细化从 lint 和引用系统信息库执行 lint 期间使用的软件包列表。如果不指定 -b 选项,将使用最新版本的软件包。另请参见 version.pattern 配置属性。
指定用于从 lint 和引用系统信息库高速缓存软件包元数据的本地目录。
指定表示 lint 系统信息库位置的 URI。支持基于 HTTP 和基于文件系统的发布。如果指定 - l,则还必须指定 -c。
列出已知的和排除的 lint 检查,然后退出。显示每个检查的短名称和描述。与 -v 标志结合使用时,将显示实现检查的方法而不显示描述。
使用 config_file 配置文件来配置 pkglint 会话。
指定正则表达式,用于细化要从 lint 系统信息库检查的软件包列表。将会装入来自引用系统信息库的所有清单(假定它们与提供的 -b 值匹配),并忽略此模式。
指定表示引用系统信息库位置的 URI。如果指定 -r,则还必须指定 -c。
以详细模式运行 pkglint,覆盖配置文件中的任何 log_level 设置。
pkglintrc 配置文件采用以下键/值参数:
发出 lint 消息的最低级别。低于该级别的 lint 消息将被放弃。缺省值为 INFO。
严重性从低到高的日志级别依次为 DEBUG、 INFO、WARNING、ERROR 和 CRITICAL。
如果为 True,则执行可能只对已发布的软件包有意义的检查。缺省值为 True。
pkglint 的插件机制允许在运行时添加其他 lint 模块。以 pkglint.ext. 开头的任何键采用必须是完全指定的 Python 模块的值。有关更多信息,请参见“开发工具”一节。
要从执行的检查集中省略的完全指定的 Python 模块、类或函数名称的空格分隔列表。
如果为 True,则在 lint 运行期间迭代清单时,会使用进度跟踪器。缺省值为 True。
指定内部版本号以针对 (-b) 执行 lint 时使用的版本模式。如果未在配置文件中指定,则 -b 选项将使用模式 *,5.11-0.,并使用分支前缀 0 来匹配 5.11 内部版本的所有组件。
扩展 pkglint、子类 pkg.lint.base.Checker 及其子类 ManifestChecker 、ActionChecker 和 ContentChecker 执行的检查集。将包含这些类的 Python 模块名称添加到配置文件中的新 pkglint.ext. 键。
这些新子类的实例由 pkglint 在启动时创建。lint 会话过程中,将会调用带有特殊关键字参数 pkglint_id 的每个子类中的方法。这些方法应该与超类中的相应 check() 方法具有相同的签名。还应该为方法指定一个 pkglint_desc 属性,该属性用作 pkglint -L 输出的描述。
参数可用于 Checker 子类,使这些子类能够调优其行为。建议的参数命名约定为 pkglint_id.name。参数值可以存储在配置文件中,或者在使用 LintEngine.get_param() 方法检索的清单或操作中访问。从清单访问参数时,将在键名的前面附加前缀 pkg.lint,以确保 pkglint 参数不会与任何现有的操作或清单值重叠。
示例 1 对特定系统信息库的首次运行
对给定系统信息库上首次运行 pkglint 会话。
$ pkglint -c /space/cache -r http://localhost:10000 mymanifest.mf
示例 2 对相同系统信息库的后续运行
针对示例 1 中使用的同一系统信息库的后续运行。
$ pkglint -c /space/cache mymanifest-fixed.mf
示例 3 将 Lint 系统信息库和细化的清单集一起使用
将 pkglint 会话和 lint 系统信息库结合运行,并指定要检查的清单的子集。
$ pkglint -c /space/othercache -l http://localhost:10000 \ -p '.*firefox.*'
示例 4 指定内部版本
在详细模式下针对给定的内部版本运行 pkglint 会话。
$ pkglint -c /space/cache -r http://localhost:10000 \ -l http://localhost:12000 -b 147 -v
示例 5 修改配置文件
带有新的 lint 模块的配置文件,排除某些检查。
$ cat ~/.pkglintrc [pkglint] log_level = DEBUG # log_level = INFO pkglint.ext.mycheck = org.timf.mychecks pkglint.ext.opensolaris = pkg.lint.opensolaris pkglint.exclude: pkg.lint.opensolaris.OpenSolarisActionChecker pkg.lint.pkglint.PkgActionChecker.unusual_perms pkg.lint.pkglint.PkgManifestChecker pkg.lint.opensolaris.OpenSolarisManifestChecker
将返回以下退出值:
命令成功。
一项或多项 lint 检查提供了输出。
指定的命令行选项无效。
发生了意外的异常。
有关下列属性的说明,请参见 attributes(5):
|
pkg(1)、pkg.depotd(1M)、pkgsend(1)、pkg(5)
http://hub.opensolaris.org/bin/view/Project+pkg/