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 用戶軟體倉庫
新增話題