Arch 用户软件仓库 - Arch Linux 中文维基

跳转到内容

# Arch 用户软件仓库

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

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

相关文章

- AUR 扫除日
- AUR 助手
- AUR 提交准则
- Aurweb RPC 界面
- 创建软件包
- 官方仓库
- 软件包维护者指导原则
- 非官方用户仓库
- .SRCINFO

Arch 用户软件仓库（Arch User Repository，AUR）是为 Arch Linux 用户而建，由社区主导的软件仓库。AUR 中的软件包以软件包描述文件（PKGBUILD）的形式提供，用户自己通过 makepkg 生成包，再由 pacman 安装。创建 AUR 的初衷是供社区管理和分享新的软件包，并由官方定期从中挑选软件包进入 extra 仓库。本文介绍用户访问和使用 AUR 的方法。

许多官方仓库软件包都来自 AUR。通过 AUR，大家可以相互分享新的软件包生成脚本（PKGBUILD 和其他相关文件）。用户还可以为软件包投票。如果一个软件包投票足够多，没有许可证问题且打包质量好，那么它就很有希望被收录进官方 extra 仓库（以后就可以直接通过 pacman 或 Arch 构建系统安装了）。

警告：AUR 中的软件包是由其他用户编写的，这些 `PKGBUILD` 完全是非官方的，未经彻底审查。使用这些文件的风险由您自行承担。
注意：如果你计划要使用 AUR 仓库，强烈建议关注 AUR 常规邮件列表，该列表被用于发布安全警告。[1] [2] [3] [4]

## 入门

用户可以从 AUR 网站下载 `PKGBUILD` 文件。这些 `PKGBUILD` 可以通过 makepkg 生成软件包，最后由 pacman 进行安装。

- 确保已经安装了 base-devel包。
- 浏览 #常见问题一节，以获得对最常见问题的解答。
- 在从 AUR 构建软件包之前，您可能希望调整 `/etc/makepkg.conf` 以优化系统的构建过程。通过调整 `MAKEFLAGS` 变量、使用多核进行压缩或使用不同的压缩算法，可以在多核处理器的系统上显著缩短包构建时间。用户还可以通过 `CFLAGS` 变量启用特定于硬件的编译器优化。详情参见 makepkg。

如果您设置了 AUR SSH 身份验证，也可以通过 SSH 连接到 AUR：运行 `ssh aur@aur.archlinux.org help` 以获得可用指令的列表。

## 安装与更新软件包

从 AUR 安装软件包并不困难。基本步骤如下：

1. #获取构建文件，包括 `PKGBUILD` 和所需的其他文件，比如 systemd 单元文件和补丁（往往并非软件包的实际代码）。
2. #检验 PKGBUILD；最重要！检验 `PKGBUILD` 及相关文件，确保其可信、无恶意。
3. #构建软件包：在保存文件的目录下运行 `makepkg`。这将下载代码，编译并打包。
4. #安装软件包：执行 `pacman -U package_file` 将软件包安装到系统上。

首先，确保安装了 base-devel包，该元软件包提供了 make包 等用于从源码进行编译的工具：

注意：AUR 中的软件包会假定构建环境里已安装了 base-devel包。

然后，选择一个合适的构建目录。该目录仅用作生成软件包或从源码构建时的工作目录，因此任何空白目录都可以。下面的示例中使用 `~/builds` 作为编译目录。

### 获取构建文件

通过在 AUR 主页中搜索，找到要安装的软件包。点击搜索结果中的软件名称，进入软件包信息页。阅读描述并确认是否为目标软件，并检查软件的更新时间和评论。

确认无误后，有几种方法可以获取包的构建文件：

- 克隆其 git 存储库，在其 AUR 页面的“包详细信息”中标记为“Git Clone URL”。这是首选方法，其优点是您可以通过 `git pull` 轻松获取包的更新。

      $ git clone https://aur.archlinux.org/package_name.git

- 通过单击其 AUR 页面右侧“Package Actions”下的“Download snapshot”链接或在终端中下载快照：

      $ curl -L -O https://aur.archlinux.org/cgit/aur.git/snapshot/package_name.tar.gz

  注意：快照文件是压缩的，必须解压（最好在为 AUR 构建预留的目录中）：`tar -xvf package_name.tar.gz`

- 使用 GitHub 上的 archlinux/aur 只读镜像，每个包都位于一个分支中。建议只克隆一个分支（整个存储库太大，速度会很慢）。您可以使用以下两种方法之一执行此操作：
  - 使用 `git clone --single-branch`：

        $ git clone --branch package_name --single-branch https://github.com/archlinux/aur.git

  - 部分克隆这个仓库 (`git clone --depth=1`) 和选择性添加分支：

        $ git clone --depth=1 https://github.com/archlinux/aur.git; cd aur
        $ git remote set-branches --add origin package_name
        $ git fetch
        $ git switch package_name

### 检验 PKGBUILD

切换到含有软件包的 `PKGBUILD` 文件的目录：

    $ cd package_name

警告：请仔细检查 git 代码库中的 `PKGBUILD`、所有 .install 文件以及其它文件，确认是否带有恶意或危险命令。如有任何怀疑，请不要构建软件包，并到论坛或邮件列表中寻求帮助。过去已经发现数例含恶意代码的软件包。[5] [6] [7] [8] 一些工具，比如 traurAUR 和 ks-aur-scannerAUR，可辅助用户扫描 PKGBUILD 内容；但它们不能取代细致的手动检验。

查看所有提供的文件中的内容。例如使用 less 查看 `PKGBUILD`：

    $ less PKGBUILD

检查 `PKGBUILD` 源码列中是否存在签名文件（.sig 或 .asc）。若是，则获取 PKGBUILD 列出的 validpgpkeys 公钥之一。更多信息参见 makepkg#验证签名。

无论什么情况下，必须牢记恶意代码也可能被签名，因此必须仔细检查 `PKGBUILD`，尤其是可能从仓库之外获取软件代码的部分。

提示：如果您正在更新软件包，您可能需要查看最后一次提交以来的变动。

- 您可以使用 `git show` 来查看最后一次提交之后的变动。
- 您也可以使用 vimdiff：`git difftool @~..@ --tool=vimdiff`。使用 vimdiff 的好处是可以查看到所有文件，以及对出现变更部分的提示。

### 构建软件包

手动检查文件后，以普通用户权限执行 makepkg ，下面是一些有用的参数：

- `-s`/`--syncdeps` 会在构建之前使用 pacman 自动解析和安装任何依赖项。如果包依赖于其他 AUR 包，则您应先手动安装它们。
- `-i`/`--install` 会在构建成功后安装软件包。这使您可以跳过通常需手动完成的下一步。
- `-r`/`--rmdeps` 会在构建后删除不需要的构建时依赖项。但是，下次更新包时可能需要重新安装这些依赖项。
- `-c`/`--clean` 会在构建后清理临时构建文件，因为它们不再需要。这些文件通常仅在调试构建过程时才需要。

提示：使用 `git clean -dfx` 可以删除所有不被 git 跟踪的文件，从而删除所有以前构建的包文件。

### 安装软件包

现在可以使用 pacman 安装该软件包：

    # pacman -U package_name-version-architecture.pkg.tar.zst

注意：

- 如果您在 `makepkg.conf` 中更改了 `PKGEXT`，则包文件的名称可能会略有不同。
- 以上示例只是对构建过程的简要总结。特别推荐阅读 makepkg 和 Arch 构建系统文章以了解更多详情。

提示：在不进行构建的情况下，您可以用 `makepkg --packagelist` 来获取生成的软件包文件名列表。

### 升级软件包

在包含包的 `PKGBUILD` 的目录中，您必须首先使用命令更新文件：

    $ git pull

然后按照之前的构建和安装说明进行操作。

### 更新软件包

Pacman 不支持 AUR，因此更新您安装的所有包是您的职责，而不是 pacman 的。如果官方仓库中的包更新了，您需要重新构建依赖于那些库的 AUR 包。`checkrebuild` 和 rebuild-detector包 提供的 `rebuild-detector` 钩子可用于查找需重新构建的软件包。

## 账户状态

### 封禁（Suspension）

作为软件包维护者时，可以对用户配置“封禁”字段，从而挂起目标用户。当用户被封禁时，他们不能：

- 登录 https://aur.archlinux.org
- 接收通知
- 与 git 界面交互

### 非活动（Inactivity）

当编辑自己的账户或作为软件包维护者编辑其他用户的账户时，可以设置“非活动”字段。使用非活动账户有两个原因：

- 在其账户页面上显示某人被标记为非活动的日期
- 根据他们对新提案的不活动情况，生成当前的活跃软件包维护者计数

## 反馈

### 在软件包上添加评论

AUR 网页界面中有一个评论工具，允许用户就改进提出建议和反馈给 `PKGBUILD` 贡献者。

提示：避免将补丁或 `PKGBUILD` 粘贴到评论部分：它们很快就会过时，最终会不必要地占用大量空间。请将这些文件通过电子邮件发送给维护者，甚至可以使用 pastebin。

Python-Markdown 提供了基本的 Markdown 语法来格式化评论。

注意：

- 此实现与官方语法规则或许会有一些差异。
- 对软件包 Git 存储库的提交哈希值，以及对 Flyspray 工单的引用会被自动转换为链接。
- 长评论默认折叠，可按需展开。

### 给软件包投票

所有的 Arch 用户都可以通过 AUR 界面为喜欢的软件包投票。所有软件包都有机会被包维护者接手，并收录至 extra 仓库。投票数是该选拔过程的重要依据之一，因此请尽可能地投票！

注册 AUR 网站账户，在浏览软件包时会看到投票选项。注册后，还可以通过 aur-auto-vote-gitAUR 在命令行中投票。

此外，如果你设置了 AUR SSH 身份认证，可以使用 ssh 密钥直接通过命令行投票，不再需要保存或者输入 AUR 密码：

    $ ssh aur@aur.archlinux.org vote package_name

### 将软件包标记为过期

首先，点击软件包页面的“Flag Out-of-date”（中文版为“标记为过期”），并说明过期的原因，最好包含新版本的发布说明或 tarball 的链接。

可以通过邮件通知维护人员。如果两周后还是没有得到答复，可以发出遗弃（orphan）请求。更多信息请参考 AUR 提交准则#请求。

注意：VCS 软件包 在 `pkgver` 变化时并不会过时，所以不要标记它们，且维护者也只会取消标记并无视请求。AUR 维护者不应该仅为升高 `pkgver` 就进行提交。

## 调试包构建过程

1. 在构建任何东西之前，通过更新确保您的构建环境是最新的。
2. 确保您已安装 base-devel包。
3. 对 `makepkg` 搭配使用 `-s` 选项，以在开始构建过程之前检查并安装所有依赖项。
4. 试试默认的 makepkg 配置。
5. 常见问题请参阅 Makepkg#问题处理。

如果您在构建包时遇到问题，请先阅读其 `PKGBUILD` 及其 AUR 页面上的评论。

可能 `PKGBUILD` 本身就有配置问题。如果您无法自行解决，请将其报告给维护者（例如，通过在 AUR 页面的评论中发布您遇到的错误）。您也可以在 AUR 问题、讨论和 PKGBUILD 请求论坛寻求帮助。

问题原因可能并不简单，可能会涉及自定义到 `CFLAGS`、`LDFLAGS` 和 `MAKEFLAGS`。为排除由您的特定系统配置引起的问题，请在干净的 chroot 中构建包。如果在干净的 chroot 下构建仍然失败，则问题很可能出在 `PKGBUILD`。

请参阅创建软件包#检查包的逻辑性以获得关于使用 namcap 的信息。如果您希望审核 `PKGBUILD`，请将其发布到 aur-general 邮件列表以获得软件包维护者和其他 AUR 成员的反馈，或发布到创建和修改包论坛。您还可以在 Libera Chat 上的 #archlinux-aur IRC 频道中寻求帮助。

## 提交

用户可以使用 AUR 分享 `PKGBUILD`。参见 AUR 提交准则以获得更多细节。

## Web 接口翻译

参阅 AUR 源码中的 i18n.md 获得关于创建和维护 AUR Web 界面翻译的详细信息。

## 历史

最初，人们仅将 `PKGBUILD`、所需的补充文件和构建好的包上传到 `ftp://ftp.archlinux.org/incoming` 服务器。包及相关文件会暂存在此，直至一位“受信用户”（现已更名为软件包维护者）看到这个程序并接管维护。

然后，受信用户仓库诞生了。社区中，特定的个人被授权托管他们自己的仓库，以供他人使用。在更灵活、更易用的目标下，AUR 在这个基础上扩展壮大。事实上，AUR 维护者曾一直被称作受信用户（Trusted user，TU），直到更名为软件包维护者。

在 2015 年 6 月 8 日到 8 月 8 日期间，AUR 从 3.5.1 版本迭代到 4.0.0，引入了通过 Git 仓库发布 `PKGBUILD` 的功能。 已存在的包会被丢弃，除非维护者手动地将它们移植到新的基础架构上。

### AUR3 包的 Git 仓库

Github 上的 AUR 存档中有一个包含移植时 AUR 3 的所有包的仓库。

或者，采用等价的 aur-mirror 仓库。

## 常见问题

### 什么样的软件包能被放到 AUR？

AUR 中的软件包仅是编译脚本，即为 pacman 构建二进制文件的蓝图。只要你遵循了打包内容的许可条例，基本上符合规则的软件包都可以提交。有时候，下载的链接具有 "you may not link" 条款（即不可分发），这时就不能提供下载链接，而是要用程序名称代替，用户需要用其它方式提前获取受限制的源代码。有疑问请及时询问。

### 怎么可以为 AUR 中的包投票？

见 #给软件包投票。

### 软件包维护者是什么？

参见 Arch 术语#软件包维护者。

### Arch User Repository 和 extra 仓库有何区别？

Arch User Repository 是储存所有用户提交的 `PKGBUILD` 的地方，软件包需通过 makepkg 手动生成。吸引足够多的社区关注及有软件包维护者支持的 `PKGBUILD` 会被收录进 extra 仓库（由软件包维护者维护），以二进制软件包形式提供，可以由 pacman 安装。

### AUR 中的软件包过期了，我该怎么做？

参见 #将软件包标记为过期。

同时，你可以在本地编辑 `PKGBUILD` 来自行更新软件包。有时更新不需要修改构建流程，只用按需更新 `pkgver` 或 `source` 数组即可。

### `makepkg` 无法构建某个软件包，我该怎么办？

您很可能忘了点啥，参见 #调试包构建过程。

### ERROR: One or more PGP signatures could not be verified! 我该怎么办？

最有可能的情况是您没有所需的公钥来验证下载的文件。详情参见 Makepkg#验证签名。

### 如何编写 PKGBUILD？

查阅 AUR 提交准则#提交软件包的规则 和 创建软件包。

### 我想提交一个 PKGBUILD，希望别人帮忙检查错误。

您可以通过多种渠道提交您的材料供审核；请看 #调试包构建过程。

### PKGBUILD（AUR 软件包）怎样才能被收录到 extra 软件仓库？

一般至少需要 10 票，并且要有软件包维护者愿意维护，否则即便有上千票也不会收录。当然，如果某个软件包维护者愿意维护一个软件包的话，投票数往往不是决定因素。

一些流行的软件包未被收录的原因一般是：

- Arch Linux 的软件仓库中已经有了别的版本。
- 没有再发布的授权许可。
- 那个软件包的功能只和 AUR 相关（例如，是个 AUR helper）

另见包进入 extra 仓库的规则。

### 如何加速编译？

参见 Makepkg#减少编译时间。

### foo 和 foo-git 的区别是什么？

很多 AUR 软件包都包含稳定版本和开发版本。开发版本一般都会有代表版本控制系统的后缀。开发版本并不是为日常使用而设计的，不过可能包含新功能或者 bug 修复。由于执行 `makepkg` 时会从软件源获取最新的代码，因此 AUR 上的 `pkgver()` 并不代表上游的最新更改。这些软件包很可能会跳过对 VCS 源代码的完整性效验。

同时请参阅 系统维护#使用经测试的软件包。

### 为啥某个软件包从 AUR 消失了？

可能是有软件包维护者认领了这个软件包，并把它收入到 extra 仓库中了。

软件包也可能因为不满足提交软件包的规则而被删除，您可以在 aur-requests 存档中找到删除原因。

注意：通常被删除软件包的 git 仓库仍被保留，细节请参考 AUR 提交准则#请求。

### 我要怎么找出从 AUR 里消失的软件包？

最简单的办法是检查软件包 AUR 页面的 HTTP 状态：

    $ comm -23 <(pacman -Qqm | sort) <(curl https://aur.archlinux.org/packages.gz | gzip -cd | sort)

### 如何得到包含所有 AUR 包的列表？

- https://aur.archlinux.org/packages.gz
- 使用来自 python3-aurAUR 的 `aurpkglist`。
- 新的 AUR 元数据存档

## 另请参阅

- AUR 网页界面
- AUR 邮件列表

分类：​

- 关于 Arch
- 包开发
- 包管理

Arch 用户软件仓库
添加话题