.SRCINFO (简体中文) - ArchWiki

Jump to content

# .SRCINFO (简体中文)

From ArchWiki
翻译状态：本文是 .SRCINFO 的翻译。上次翻译日期：2021-09-16。如果英文版本有所更改，则您可以帮助同步翻译。

相关文章

- Arch packaging standards
- Arch Build System (简体中文)
- Creating packages
- PKGBUILD (简体中文)
- Category:Package development
- Arch User Repository (简体中文)
- makepkg (简体中文)
- pacman (简体中文)
- pacman/Tips and tricks

`.SRCINFO` 用一个简单直接的格式记录软件包的元数据。AUR 的网站后台或 AUR 工具 可以不用解析 PKGBUILD 就获得需要的信息。

警告： 对 `PKGBUILD` 元数据的修改例如 pkgver() 更新，不会自动同步到 `.SRCINFO`. 如果修改了 `PKGBUILD` 但是没更新 `.SRCINFO` 会导致 AUR 使用错误的数据。

## 生成

可以通过 makepkg 自动生成 `.SRCINFO` 文件：

    $ makepkg --printsrcinfo > .SRCINFO

## 语法

`.SRCINFO` 按行解析,每一行由像`key = value`一样的键值对组成.

每一个键都是一个字段,键值与 PKGBUILD 变量对应, PKGBUILD(5) § OPTIONS AND DIRECTIVES. 变量和数值都不应该加引号。等号两边一定要有一个空格(即使值为空)而且值之间不能包含逗号. 有些值在 `PKGBUILD` 中是数组，需要变为同样的值多次指定，例如：

    # PKGBUILD
    arch=(i686 x86_64)

需要变为：

    # .SRCINFO
    arch = i686
    arch = x86_64

文件以 pkgbase 声明开头，此段落包含适用于整个程序的数据。标准的 `PKGBUILD` 描述了一个单独的软件包，那么这就是唯一的主段落，后面跟着 pkgname 声明包含软件包的名称。

    pkgbase = foo
    	pkgdesc = An example package.
    	[...]
    	md5sums = SKIP

    pkgname = foo

如果 `PKGBUILD` 包含多个软件包，那么每个段落都以 `pkgname` 开头，然后记录针对那个软件包的数据。

## 要求

下面字段只能在`.SRCINFO` 文件的 `pkgbase` 段落出现一次：

- `pkgver`, `pkgrel`, `epoch`

下面字段可以在任何字段出现，每段落最多一次：

- `pkgdesc`, `url`, `install`, `changelog`

下面字段可以在一个段落里多次出现：

- `arch`
- `groups`
- `license`
- `noextract`
- `options`
- `backup`
- `validpgpkeys`

下列的字段名称会重复出现,也许有 体系结构 作为后缀

    source_x86_64 = https://foo.bar/file.tar.gz
    source_i686 = https://foo.bar/file_i686_patch.tar.gz

- `source`
- `depends`, `checkdepends`, `makedepends`, `optdepends`
- `provides`, `conflicts`, `replaces`
- `md5sums`, `sha1sums`, `sha224sums`, `sha256sums`, `sha384sums`, `sha512sums`

其它字段名称,换行和带有"#"的行会被忽略.

Category:

- Package development (简体中文)