跳转至内容

namcap

来自 ArchWiki

Namcap 是一个 Arch Linux 工具,用于检查二进制软件包和源码 PKGBUILD 是否存在常见的打包错误。

安装

安装 namcap 包。

用法

要对文件运行 namcap,其中 filenamePKGBUILD 或软件包二进制文件 package_name.tar.zst 的名称。

$ namcap filename

如果您想查看额外的详细信息,请使用 --info (-i) 标志调用 namcap

$ namcap --info filename

Namcap 使用三种类型的 标签 系统来对输出进行分类。

  • 错误—以 E: 表示—是 namcap 非常确定是错误的并且需要修复的事项。错误很重要,应该立即修复;它们主要与安全性不足、缺少许可证或权限问题有关。
  • 警告—以 W: 表示—是 namcap 认为应该更改的事项,但如果您知道自己在做什么,则可以保留它们。
  • 信息—以 I: 表示—仅在使用 info 参数时显示。信息消息提供可能有所帮助但不需要更改的信息—可以将它们视为注释或说明。

通常 namcap 会打印人类可读的解释(有时还提供修复问题的建议)。如果您想要程序可以轻松解析的输出,请将 --machine-readable (-m) 标志传递给 namcap

标签文件 /usr/share/namcap/namcap-tags (在线源码) 由指定 namcap 代码中使用的连字符分隔标签的 人类可读形式 的行组成。以 # 开头的行被视为注释。

# The comment
machine-parsable-tag %s :: The human-readable description for the tag %s
  • :: (双冒号) 分隔连字符分隔的机器可读标签和人类可读的描述。
  • %s 是一个格式说明符,有关更多信息,请参阅 #创建模块

有关更多信息,请参阅 namcap(1)READMENEWS

创建模块

namcap 程序 namcap.py 接受软件包或 PKGBUILD 的文件名作为参数,并创建一个 pkginfo 对象,然后将其传递给定义在 __tarball____pkgbuild__ 中的规则列表。一旦您的模块完成,请记住将其添加到适当的数组中。

  • __tarball__ 定义处理二进制软件包的规则。
  • __pkgbuild__ 定义处理 PKGBUILD 的规则。

一个示例 namcap 模块如下所示:

namcap/url.py
import pacman

class package:
    def short_name(self):
        return "url"

    def long_name(self):
        return "Verifies url is included in a PKGBUILD"

    def prereq(self):
        return ""

    def analyze(self, pkginfo, tar):
        ret = [[], [], []]
        if not hasattr(pkginfo, 'url'):
            ret[0].append(("missing-url", ()))
        return ret

    def type(self):
        return "pkgbuild"

每个 namcap 模块必须具有以下方法:

  • short_name(self) — 返回一个包含模块短名称的字符串。通常,这与模块文件的 basename(1) 相同。
  • long_name(self) — 返回一个包含模块简洁描述的字符串。该描述在列出所有规则时使用,例如使用 namcap --rules=rule_list
  • prereq(self) — 返回一个包含模块正常运行所需先决条件的字符串。通常,对于处理 PKGBUILD 的模块为空字符串 (""),对于处理软件包文件的模块为 "tar"。如果需要在进一步处理之前将软件包内容解压到临时目录,则应指定 "extract"
  • analyze(self, pkginfo, tar) — 应返回一个列表,该列表依次包含三个列表:errorwarninginformation 标签。这些 标签列表 的每个成员都应为一个元组,包含两个部分:标签短格式(连字符分隔),带有可能的格式说明符(如 %s),以及参数
  • type(self) — 对于处理 PKGBUILD 的模块,返回 "pkgbuild";对于处理二进制软件包文件的模块,返回 "tarball"

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.