arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
96 lines (63 loc) • 4.13 kB
Markdown
相关文章
* [Arch packaging standards](/index.php/Arch_packaging_standards "Arch packaging standards")
* [Arch Build System (简体中文)](/index.php/Arch_Build_System_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) "Arch Build System (简体中文)")
* [Creating packages](/index.php/Creating_packages "Creating packages")
* [PKGBUILD (简体中文)](/index.php/PKGBUILD_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) "PKGBUILD (简体中文)")
* [Category:Package development](/index.php/Category:Package_development "Category:Package development")
* [Pacman tips](/index.php/Pacman_tips "Pacman tips")
* [Arch User Repository (简体中文)](/index.php/Arch_User_Repository_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) "Arch User Repository (简体中文)")
* [makepkg (简体中文)](/index.php/Makepkg_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) "Makepkg (简体中文)")
* [pacman (简体中文)](/index.php/Pacman_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) "Pacman (简体中文)")
**翻译状态:** 本文是英文页面 [.SRCINFO](/index.php/.SRCINFO ".SRCINFO") 的[翻译](/index.php/ArchWiki_Translation_Team_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) "ArchWiki Translation Team (简体中文)"),最后翻译时间:2016-04-02,点击[这里](https://wiki.archlinux.org/index.php?title=.SRCINFO&diff=0&oldid=429252)可以查看翻译后英文页面的改动。
`.SRCINFO` 用一个简单直接的格式记录软件包的元数据。[AUR](/index.php/AUR "AUR") 的网站后台或 [AUR 工具](/index.php/AUR_helpers "AUR helpers") 可以不用解析 [PKGBUILD](/index.php/PKGBUILD "PKGBUILD") 就获得需要的信息。
**警告:** 对 `PKGBUILD` 元数据的修改例如 [pkgver()](/index.php/PKGBUILD#pkgver "PKGBUILD") 更新,不会自动同步到 `.SRCINFO`. 如果修改了 `PKGBUILD` 但是没更新 `.SRCINFO` 会导致 AUR 使用错误的数据。
## 生成
可以通过 makepkg 或者 [pkgbuild-introspection](https://aur.archlinux.org/packages/pkgbuild-introspection/) 提供的 `mksrcinfo` 自动生成 `.SRCINFO` 文件:
```
$ makepkg --printsrcinfo > .SRCINFO
```
## 语法
`.SRCINFO` 按行解析,每一行由像`key[_arch] = value`一样的键值对组成.
每一个键都是一个字段,键值与[PKGBUILD 变量](https://www.archlinux.org/pacman/PKGBUILD.5.html#_options_and_directives)对应. 变量和数值都不应该加引号。等号两边一定要有一个空格(即使值为空)而且值之间不能包含逗号. 有些值在 `PKGBUILD` 中是数组,需要变为同样的值多次指定,例如:
```
# PKGBUILD
arch=(i686 x86_64)
```
需要变为:
```
# .SRCINFO
arch = i686
arch = x86_64
```
文件以 [pkgbase](/index.php/PKGBUILD#pkgbase "PKGBUILD") 声明开头,此段落包含适用于整个程序的数据。标准的 `PKGBUILD` 描述了一个单独的软件包,那么这就是唯一的主段落,后面跟着 [pkgname](/index.php/PKGBUILD#pkgname "PKGBUILD") 声明包含软件包的名称。
```
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`
下列的字段名称会重复出现,也许有 [体系结构](/index.php/PKGBUILD#arch "PKGBUILD") 作为后缀
```
source*_x86_64* = [https://foo.bar/file.tar.gz](https://foo.bar/file.tar.gz)
source*_i686* = [https://foo.bar/file_i686_patch.tar.gz](https://foo.bar/file_i686_patch.tar.gz)
```
* `source`
* `depends`, `checkdepends`, `makedepends`, `optdepends`
* `provides`, `conflicts`, `replaces`
* `md5sums`, `sha1sums`, `sha224sums`, `sha256sums`, `sha384sums`, `sha512sums`
其它字段名称,换行和带有"#"的行会被忽略.