'\" te .\" Copyright (c) 2007, 2014, Oracle and/or its affiliates.All rights reserved. .TH pkglint 1 "2014 年 4 月 29 日" "SunOS 5.11" "用户命令" .SH 名称 pkglint \- 映像包管理系统软件包 lint .SH 用法概要 .LP .nf /usr/bin/pkglint [-c \fIcache_dir\fR] [-r \fIrepo_uri\fR]\&.\&.\&. [-p \fIregexp\fR] [-f \fIconfig_file\fR] [-b \fIbuild_no\fR] [-v] [-l \fIlint_uri\fR]\&.\&.\&. | \fImanifest\fR \&.\&.\&. .fi .LP .nf /usr/bin/pkglint -L [-v] .fi .SH 描述 .sp .LP \fBpkglint\fR 对一个或多个软件包清单运行一系列检查,并有选择性地引用其他系统信息库。 .sp .LP 应该在发布软件包之前,在软件包构建期间使用 \fBpkglint\fR。\fBpkglint\fR 将对清单执行全面的测试,在 \fBpkgsend\fR 或 \fBpkg\&.depotd\fR 正常操作期间,执行这种测试可能会消耗过多的资源。\fB pkglint\fR 检查包括对重复操作、缺少的属性和非正常文件权限的测试。 .sp .LP 可以在命令行上将用于 lint 的清单作为本地文件的空格分隔列表进行传递,也可以从系统信息库检索清单。 .sp .LP 从系统信息库检索清单时,首次运行时 \fBpkglint\fR 将在指定的高速缓存目录中创建并填充 \fBpkg\fR(5) 用户映像。如果提供了 \fB-r\fR 选项,则为引用系统信息库创建名为 \fI cache_dir\fR\fB/ref_image\fR 的用户映像。如果提供了 \fB-l\fR 选项,则为 lint 系统信息库创建名为 \fI cache_dir\fR\fB/lint_image\fR 的用户映像。不会在这些映像中安装任何内容。\fBpkglint\fR 只使用这些映像从系统信息库中检索清单。 .sp .LP \fBpkglint\fR 的后续调用可以重新使用高速缓存目录,并可以省略任何 \fB-r\fR 或 \fB-l\fR 参数。 .sp .LP \fBpkglint\fR 对在高速缓存目录中配置发布者提供有限的支持。使用 \fBpkg\fR 可对这些映像执行更复杂的发布者配置。 .sp .LP \fBpkglint\fR 使软件包作者能够绕过对给定清单或操作进行的检查。其中的属性 \fB pkg\&.linted\fR 设置为 \fBTrue\fR 的清单或操作不会为该清单或操作生成任何 lint 输出。 .sp .LP 使用 \fBpkglint\fR 检查名称的子字符串可以进行更高粒度的 \fBpkg\&.linted\fR 设置。例如,设置为 \fBTrue\fR 的 \fBpkg\&.linted\&.\fI check\fR\&.\fIid\fR\fR 将对给定的清单或操作绕过名称为 \fB\fIcheck\fR\&.\fIid \fR\fR 的所有检查。 .sp .LP 可通过指定一个 \fBpkglintrc\fR 文件来配置 \fBpkglint\fR 的行为。缺省情况下,\fBpkglint\fR 在 \fB/usr/share/lib/pkg/pkglintrc\fR 和 \fB$HOME/\&.pkglintrc \fR 中搜索配置选项。使用 \fB-f\fR 选项可以指定其他配置文件。 .sp .LP lint 运行期间,遇到的任何错误或警告将输出到 \fBstderr\fR。 .SH 选项 .sp .LP 支持以下选项: .sp .ne 2 .mk .na \fB\fB-h\fR\fR .ad .br .na \fB\fB--help\fR\fR .ad .br .sp .6 .RS 4n 显示用法消息。 .RE .sp .ne 2 .mk .na \fB\fB-b\fR \fIbuild_no\fR\fR .ad .br .sp .6 .RS 4n 指定内部版本号,用于细化从 lint 和引用系统信息库执行 lint 期间使用的软件包列表。如果不指定 \fB-b\fR 选项,将使用最新版本的软件包。另请参见 \fBversion\&.pattern \fR 配置属性。 .RE .sp .ne 2 .mk .na \fB\fB-c\fR \fIcache_dir\fR\fR .ad .br .sp .6 .RS 4n 指定用于从 lint 和引用系统信息库高速缓存软件包元数据的本地目录。 .RE .sp .ne 2 .mk .na \fB\fB-l\fR \fIlint_uri\fR\fR .ad .br .sp .6 .RS 4n 指定表示 lint 系统信息库位置的 URI。支持基于 HTTP 和基于文件系统的发布。如果指定 \fB-l\fR,则必须还要指定 \fB-c\fR。可以多次指定 \fB-l\fR 选项。 .RE .sp .ne 2 .mk .na \fB\fB-L\fR\fR .ad .br .sp .6 .RS 4n 列出已知的和排除的 lint 检查,然后退出。显示每个检查的短名称和说明。与 \fB-v\fR 标志结合使用时,将显示实现检查的方法而不显示说明。 .RE .sp .ne 2 .mk .na \fB\fB-f\fR \fIconfig_file\fR\fR .ad .br .sp .6 .RS 4n 使用 \fI config_file\fR 配置文件来配置 \fBpkglint\fR 会话。 .RE .sp .ne 2 .mk .na \fB\fB-p\fR \fIregexp\fR\fR .ad .br .sp .6 .RS 4n 指定正则表达式,用于细化要从 lint 系统信息库检查的软件包列表。将会装入来自引用系统信息库的所有清单(假定它们与提供的 \fB-b\fR 值匹配),并忽略此模式。 .RE .sp .ne 2 .mk .na \fB\fB-r\fR \fIrepo_uri\fR\fR .ad .br .sp .6 .RS 4n 指定表示引用系统信息库位置的 URI。如果指定 \fB-r\fR,则还必须指定 \fB-c\fR。可以多次指定 \fB-r\fR 选项。 .RE .sp .ne 2 .mk .na \fB\fB-v\fR\fR .ad .br .sp .6 .RS 4n 以详细模式运行 \fBpkglint\fR,覆盖配置文件中的任何 \fBlog_level\fR 设置。 .RE .SH 文件 .sp .LP \fBpkglintrc\fR 配置文件采用以下键/值参数: .sp .ne 2 .mk .na \fB\fBlog_level\fR\fR .ad .br .sp .6 .RS 4n 发出 lint 消息的最低级别。低于该级别的 lint 消息将被放弃。缺省值为 \fBINFO\fR。 .sp 严重性从低到高的日志级别依次为 \fBDEBUG\fR、\fB INFO\fR、\fBWARNING\fR、\fBERROR\fR 和 \fB CRITICAL\fR。 .RE .sp .ne 2 .mk .na \fB\fBdo_pub_checks\fR\fR .ad .br .sp .6 .RS 4n 如果为 \fBTrue\fR,则执行可能只对已发布的软件包有意义的检查。缺省值为 \fBTrue\fR。 .RE .sp .ne 2 .mk .na \fB\fBpkglint\&.ext\&.\fR*\fR .ad .br .sp .6 .RS 4n \fBpkglint\fR 的插件机制允许在运行时添加其他 lint 模块。以 \fB pkglint\&.ext\&.\fR 开头的任何键采用必须是完全指定的 Python 模块的值。有关更多信息,请参见“开发工具”一节。 .RE .sp .ne 2 .mk .na \fB\fBpkglint\&.exclude\fR\fR .ad .br .sp .6 .RS 4n 要从执行的检查集中省略的完全指定的 Python 模块、类或函数名称的空格分隔列表。 .RE .sp .ne 2 .mk .na \fB\fBuse_progress_tracker\fR\fR .ad .br .sp .6 .RS 4n 如果为 \fBTrue\fR,则在 lint 运行期间迭代清单时,会使用进度跟踪器。缺省值为 \fBTrue\fR。 .RE .sp .ne 2 .mk .na \fB\fBversion\&.pattern\fR\fR .ad .br .sp .6 .RS 4n 指定内部版本号以针对 (\fB-b\fR) 执行 lint 时使用的版本模式。如果未在配置文件中指定,则 \fB-b\fR 选项将使用模式 \fB*,5\&.11-0\&.\fR,并使用分支前缀 0 来匹配 5\&.11 内部版本的所有组件。 .RE .SH 开发工具 .sp .LP 扩展 \fBpkglint\fR、子类 \fBpkg\&.lint\&.base\&.Checker\fR 及其子类 \fBManifestChecker \fR、\fBActionChecker\fR 和 \fBContentChecker\fR 执行的检查集。将包含这些类的 Python 模块名称添加到配置文件中的新 \fBpkglint\&.ext\&.\fR 键。 .sp .LP 这些新子类的实例由 \fBpkglint\fR 在启动时创建。lint 会话过程中,将会调用带有特殊关键字参数 \fB pkglint_id\fR 的每个子类中的方法。这些方法应该与超类中的相应 \fBcheck()\fR 方法具有相同的签名。还应该为方法指定一个 \fBpkglint_desc\fR 属性,该属性用作 \fBpkglint -L\fR 输出的说明。 .sp .LP 参数可用于 \fBChecker\fR 子类,使这些子类能够调优其行为。建议的参数命名约定为 \fB\fI pkglint_id\fR\&.\fIname\fR\fR。参数值可以存储在配置文件中,或者在使用 \fBLintEngine\&.get_param()\fR 方法检索的清单或操作中访问。从清单访问参数时,将在键名的前面附加前缀 \fBpkg\&.lint\fR,以确保 \fBpkglint\fR 参数不会与任何现有的操作或清单值重叠。 .SH 示例 .LP \fB示例 1\fR 对特定系统信息库的首次运行 .sp .LP 对给定系统信息库上首次运行 \fBpkglint\fR 会话。 .sp .in +2 .nf $ \fBpkglint -c /space/cache -r http://localhost:10000 mymanifest\&.mf\fR .fi .in -2 .sp .LP \fB示例 2\fR 对相同系统信息库的后续运行 .sp .LP 针对示例 1 中使用的同一系统信息库的后续运行。 .sp .in +2 .nf $ \fBpkglint -c /space/cache mymanifest-fixed\&.mf\fR .fi .in -2 .sp .LP \fB示例 3\fR 将 Lint 系统信息库和细化的清单集一起使用 .sp .LP 将 \fBpkglint\fR 会话和 lint 系统信息库结合运行,并指定要检查的清单的子集。 .sp .in +2 .nf $ \fBpkglint -c /space/othercache -l http://localhost:10000 \e\fR \fB-p \'\&.*firefox\&.*\'\fR .fi .in -2 .sp .LP \fB示例 4\fR 指定内部版本 .sp .LP 在详细模式下针对给定的内部版本运行 \fBpkglint\fR 会话。 .sp .in +2 .nf $ \fBpkglint -c /space/cache -r http://localhost:10000 \e\fR \fB-l http://localhost:12000 -b 147 -v\fR .fi .in -2 .sp .LP \fB示例 5\fR 修改配置文件 .sp .LP 带有新的 lint 模块的配置文件,排除某些检查。 .sp .in +2 .nf $ \fBcat ~/\&.pkglintrc\fR [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 .fi .in -2 .sp .SH 退出状态 .sp .LP 将返回以下退出值: .sp .ne 2 .mk .na \fB\fB0\fR\fR .ad .RS 6n .rt 命令成功。 .RE .sp .ne 2 .mk .na \fB\fB1\fR\fR .ad .RS 6n .rt 一个或多个软件包清单包含 lint 错误。 .RE .sp .ne 2 .mk .na \fB\fB2\fR\fR .ad .RS 6n .rt 清单中出现 lint 错误以外的错误。例如,可能指定了无效的命令行选项。 .RE .sp .ne 2 .mk .na \fB\fB99\fR\fR .ad .RS 6n .rt 发生了意外的异常。 .RE .SH 属性 .sp .LP 有关下列属性的说明,请参见 \fBattributes\fR(5): .sp .TS tab( ) box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . 属性类型 属性值 _ 可用性 \fBpackage/pkg\fR _ 接口稳定性 Uncommitted(未确定) .TE .SH 另请参见 .sp .LP \fBpkg \fR(1)、\fBpkg\&.depotd \fR(1M)、\fBpkgsend\fR(1)、\fBpkg\fR(5) .sp .LP \fBhttps://java\&.net/projects/ips/pages/Home\fR