namcap - Arch Linux 中文维基

跳至內容

# namcap

出自 Arch Linux 中文维基

翻譯狀態：

- 本文（或部分內容）譯自 namcap，最近一次同步於 2025-01-25，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

相關文章

- 創建軟體包
- pacman
- PKGBUILD

namcap 是用於檢查二進制軟體包和原始碼 PKGBUILD 中常見的打包錯誤的一個 Arch Linux 工具。

## 安裝

安裝 namcap包。

## 用法

對某一文件（可為 `PKGBUILD` 或包二進制文件如 `包名.tar.zst`）運行 namcap：

    $ namcap 文件路径

使用 `--info`（`-i`）標誌運行 namcap 以輸出額外信息：

    $ namcap --info 文件路径

namcap 使用一種「標籤」系統來分類輸出。標籤分為三種類型：「錯誤」（error，表示為 `E`）、「警告」（warning，表示為 `W`）和「信息」（informational，表示為 `I`）。錯誤十分重要，必須立即修復，其通常有關安全性不充分、缺少許可證或權限問題。

通常，namcap 會列印出一個人類可讀的說明（可能包含修復問題的建議）。要使輸出更容易由程序解析，向 namcap 傳遞 `--machine-readable`（`-m`）標誌。

「標籤文件」 `/usr/share/namcap/namcap-tags`（在線源）指定了與代碼中使用的帶連字符標籤相對應的人類可讀描述（以 `#` 開頭的行被視為注釋）：

    # 注释
    machine-parsable-tag %s :: 标签 %s 的人类可读描述

注意：

- `::`（雙冒號）用於分隔機器可讀的標籤和人類可讀的描述。
- `%s` 是一個格式說明符（format specifier），詳見#創建模塊。

更多信息請參閱 namcap(1)、README 和 NEWS。

## 創建模塊

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=規則列表` 列出所有規則時使用。

- `prereq(self)`⸺返回一個包含模塊正常運行所需先決條件的字符串。對於處理 `PKGBUILD` 的模塊，通常是空字符串（`""`）；對於處理包文件的模塊，則是`"tar"`。如果在進一步處理之前需要將包內容提取到臨時目錄，則應指定`"extract"`。

- `analyze(self, pkginfo, tar)`⸺返回一個包含三個子列表的列表，三個子列表分別對應「錯誤」、「警告」和「信息」標籤。每個標籤列表的成員應該是一個元組，包含兩個部分：標籤的短形式（上文提到的帶連字符標籤，可帶有適當格式說明符（format specifier，如 `%s`））以及格式說明符所對應的參數元組。

- `type(self)`⸺對於處理 `PKGBUILD` 的模塊，返回 `"pkgbuild"`；對於處理二進制包文件的模塊，返回 `"tarball"`。

分類：​

- Arch 項目
- 命令
- 包開發

namcap
新增話題