.SRCINFO - Arch Linux 中文维基

跳转到内容

# .SRCINFO

来自 Arch Linux 中文维基
翻译状态：

- 本文（或部分内容）译自 .SRCINFO，最近一次同步于 2025-10-24，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

相关文章

- Arch 构建系统
- Arch 打包准则
- 创建软件包
- pacman
- pacman/提示和技巧

`.SRCINFO` 文件（旧称 `.AURINFO`）用一个简单直接的格式记录软件包的元数据，这样像 devtools包 的工具和 AUR 网站后台或 AUR 助手可以不用解析 PKGBUILD 就获得需要的信息。直接解析 shell 脚本的潜在问题可参考 FS#25210，FS#15043 和 FS#16394。

警告：对 `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` 对应：

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

    pkgname = foo

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

这篇文章的某些内容需要扩充。

原因：The above will suffice for some, below is a verbose list of parameters; split these up to improve readability. Also, find ways to reduce redundancy between this and PKGBUILD. (在 Talk:.SRCINFO 中讨论)

## 要求

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

- `pkgver`，`pkgrel`，`epoch`

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

- `pkgdesc`，`url`，`install`，`changelog`

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

- `arch`
- `groups`
- `license`
- `noextract`
- `options`
- `backup`
- `validpgpkeys`（只能在 pkgbase 出现）

下列的字段可以重复出现，以多个体系结构为例：

    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`

其它字段名称、换行和以 `#` 开头的行会被忽略。

分类：​

- 包开发

.SRCINFO
添加话题