# .SRCINFO (简体中文)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

相关文章

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

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

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

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

## 生成

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

    $ makepkg --printsrcinfo > .SRCINFO

## 语法

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

每一个键都是一个字段,键值与PKGBUILD 变量对应. 变量和数值都不应该加引号。等号两边一定要有一个空格(即使值为空)而且值之间不能包含逗号. 有些值在 `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 (简体中文)