快轉到主要內容

什麼是AUR套件庫?如何安裝Arch Linux的AUR軟體?

Linux系統 Linux使用教巧 Arch User Repository Arch Linux
✍ 切換正體/簡體字
目錄

使用Arch Linux的時候,常常會有很多人說要從AUR裝某某套件,Arch Wiki有時候引用軟體也會標示此軟體位於AUR,那麼AUR究竟是什麼呢?從AUR安裝軟體的優點為何?

AUR的優點,一張圖就能說明(笑)

就讓Ivon簡介Arch Linux AUR特色,還有如何安裝AUR套件,再介紹常用的指令技巧。

這篇文章略長,請善用目錄看你想看的部份。順帶一提,現在非Arch Linux的發行版也有安裝AUR軟體的方法了呦。

1. AUR簡介
#

Arch Linux跟大多數發行版一樣,是透過套件管理器來安裝軟體的。套件管理器pacman預設會從Arch Linux套件庫下載套件。這個套件庫我們稱為主套件庫(軟體庫,Main Repository),套件由Arch Linux官方開發者維護。

使用者可以自由提交套件,可是進入主套件庫需要符合 官方Wiki寫的規定,可能要等待很長的時間。

如果軟體太小眾?太新穎?授權條款有問題?自是不可能有進入主套件庫的日子,於是乎,AUR便成為了這些軟體的去處。

AUR全名Arch User Repository,顧名思義是使用者維護的套件庫,是主套件庫以外Arch Linux重要的軟體來源之一。

AUR網站是Arch Linux官方支援的,但上面的軟體套件都是用戶各自提交維護。使用者在這邊維護自己的軟體,互相交流,久而久之AUR就成為了最大的Linux「第三方軟體庫」,上面收錄高達93244個套件,可能比Ubuntu的PPA、Fedora的COPR、openSUSE的OBS還要多套件。

AUR網站還有用戶投票的功能,套件只要夠熱門便有機會進入Arch Linux官方的主套件庫。


不過,其實AUR沒有收錄任何軟體的「二進位檔」,每個套件庫只有「PKGBUILD」和純文字的patch檔。PKGBUILD本身是一個指令稿,告訴系統要到哪個網站下載程式,並指示怎麼安裝這個軟體而已。

安裝過程很隨意,有的AUR套件是本機編譯,有的拆deb套件,還有的是拆AppImage來裝。反正到最後,AUR的軟體安裝到系統,跟一般pacman安裝的軟體是沒有差異的。

2. AUR套件優點為何?
#

  1. AUR自由度很高,什麼都能收,舉凡桌布、桌面環境、付費軟體(咦)、遊戲安裝包都有人提供。像是Google Chrome、Soptify、Nvidia cuDNN、Autodesk Maya之類的都有人打包。

  2. 有些軟體裝起來需要打一堆依賴(例如依賴Wine的Windows軟體),AUR指令稿一發下去就能搞定。

  3. 如果維護者PKGBUILD寫得好,它可以把原本只有發表tar.xz的軟體整合到你的系統,使其圖示出現在應用程式列表。

  4. AUR的軟體不需要事先打包也能上,它等同是一套自動化編譯系統,所以有些軟體剛出來,作者會優先在AUR發表套件。

  5. 有些人嫌自己手上軟體版本不夠新,也會到AUR找貼近軟體上游git儲存庫的AUR套件來裝。如此一來你就能在一個系統上混合不穩定與穩定版的軟體。

3. 安裝AUR套件的注意事項
#

AUR的套件風險很大,因為依賴用戶自發監視,且AUR安裝的軟體權限跟用pacman安裝的沒什麼不同。

Linux的套件庫依賴社區成員之間的信任,投毒不是沒有,真的曾經 有人在AUR放病毒,儘管後來被刪除了,但安裝還是要小心。

  1. 當你在AUR網站看到一個套件的時候,應該先檢查AUR頁面的License欄位,開源軟體你可以稍微瞄一下PKGBUILD裡面的內容是不是來自開源組織的網站。但如果你安裝的是閉源軟體,就更應該注意軟體來源,閱讀Sources處提供的使用者授權合約,還有下面用戶的留言怎麼講的了。

  2. 再看一下Last Updated:,確認維護者有沒有常常更新,並看該套件有沒有被標記為Flagged out-of-date,免得一裝依賴項目全部爆炸。

  3. 有些AUR套件是需要等編譯的(當你安裝時看到進度條出現就知道了),例如rustdesk。如果你不想每次都等編譯,可以另外找找看有沒有人提供-bin版本的套件,以rustdesk的例子來說就是rustdesk-bin

  4. 有的軟體會提供-git的版本,這代表會自動追蹤上游最新的開發分支,比較不穩定。負責打包的用戶可能也沒時間檢查,所以儘量不要安裝這個版本。

  5. 別忘了,如果你連在AUR都找不到想要的軟體,你還有 Flatpak Snap AppImage Distrobox等安裝軟體的管道。

4. 安裝AUR套件前建議開啟的選項
#

  1. 安裝依賴套件
sudo pacman -S base-devel
  1. 首先,編輯makepkg的設定檔,設定編譯選項。
sudo vim /etc/makepkg.conf
  1. 因為有些AUR套件下載下來是要從原始碼編譯的,建議加入以下選項(或者將MAKEFLAGS取消#註解),讓系統編譯的時候可以使用全部CPU加快速度。
MAKEFLAGS="-j$(nproc)"
  1. 如果你的系統性能比較孱弱(例如跑在開發板上),那麼就取消壓縮套件的機制,在AUR軟體編譯完後直接安裝。
PKGEXT='.pkg.tar'
SRCEXT='.src.tar'
  1. 再來,如果套件下載速度很慢,請編輯/etc/pacman.d/mirrorlist檔案,設定要使用的鏡像站。
sudo vim /etc/pacman.d/mirrorlist
  1. 鏡像站列表挑一個,這裡我使用台灣國網中心的套件庫。
Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch
  1. 更新套件庫
sudo pacman -Syy

但請注意,AUR不收錄「軟體」本體,此處的鏡像站只有AUR的依賴項目會用到(因為這些套件是從Arch Linux官方套件庫下載的),AUR軟體要另外下載。

比如說Google Chrome,在從AUR安裝的過程中,它還是要連線到Google伺服器去抓安裝檔的。

所以如果你不手動檢查PKGBUILD,是無法預測AUR會從哪邊下載套件的。如果你的網路連線受到干擾,那麼建議找個全域VPN繞過去,避免頻繁換鏡像站的操作。

5. 如何手動安裝AUR套件
#

這裡內容僅供參考,身為終端使用者,我們很少用手動安裝AUR的方式,因為不好管理,所以會安裝後面講的套件管理器。

  1. 點選複製你要安裝的套件網址

  2. 用git複製儲存庫

git clone https://aur.archlinux.org/google-chrome.git
  1. 進入目錄,檢視PKGBUILD內容有無問題
cd google-chrome
vim PKGBUILD
  1. 接著使用makepkg -si指令,讓pacman自動尋找依賴套件,再按照PKGBUILD的內容,下載檔案,打包成Arch Linux的套件。
makepkg -si
  1. AUR下載的套件經過本機打包後,會變成Arch Linux的標準套件格式(pkg.tar.xz),並交由pacman安裝。

  2. 如果要查詢哪些套件是從AUR安裝的,使用sudo pacman -Qm指令。

6. 如何用yay自動化安裝AUR套件
#

AUR也可以有套件管理器!

套件管理器(Package Manager)的講法不精確,正確來說是AUR助手(Helper)才對。

AUR助手就是幫你自動完成上述手動安裝PKGBUILD的操作,簡化操作流程,變成用幾行指令就能管理AUR套件,這樣日後要更新就容易多了。

常見的AUR助手有yaourt、yay、paru、pacaur,圖形版有pacmac。其中Go語言寫的「yay」比較受歡迎,它將常用的操作封裝成一行指令就能解決。

  1. 根據 官方Github指示,用以下指令安裝yay
sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
  1. yay的指令跟pacman很類似,例如搜尋套件
yay google-chrome
  1. 安裝套件
yay -S google-chrome

yay的指令很聰明,它會自動判斷套件是否有進Arch Linux的主套件庫,如果有的話就優先下載那邊的版本,沒有的話才去AUR上找。

安裝套件的時候,yay會問使用者是否要查看PKGBUILD,通常直接Enter下一步,等待其安裝完成。有時候需要打密碼。

  1. 解除安裝套件的指令:
yay -R google-chrome
  1. 更新所有套件的指令:
yay -Syy
yay -Syu

注意:yay -Syu等同pacman -Syu全系統更新。如果你太久沒更新可能套件依賴會崩掉,所以才會先更新系統再安裝AUR套件。

  1. 如果你不想一個一個確認,那麼就加入--noconfirm選項自動同意,並使用--sudoloop防止sudo密碼太快過期。
yay -Syu --noconfirm --sudoloop
  1. yay會將下載的套件快取檔和PKGBUILD放在~/.cache/yay",嫌太肥可以用yay -Sc指令清除。

7. 如果AUR不符合需求就修改PKGBUILD吧
#

PKGBUILD的內容請看 Arch Linux 第一次打包就上手 - 書術方隅的介紹,他寫的很清楚了。

PKGBUILD的檔案格式清楚易懂,遇到問題的時候你也可以嘗試自行修改。

這裡還有個實際案例: 讓Arch Linux x86架構的套件能裝在Arch Linux ARM上

8. 不是Arch Linux也想裝AUR的套件?
#

透過 Distrobox,你就能在Ubuntu、Fedora、openSUSE安裝AUR的軟體,並將其整合到宿主系統。

只要不是涉及修改系統底層的軟體應該都能跑起來。

參考資料
#

相關文章

Distrobox使用例探討:在Ubuntu安裝Arch Linux AUR的套件
Linux系統 Linux好用軟體 Distrobox Arch Linux Ubuntu Arch User Repository
比較Arch Linux核心差異:linux, linux-zen, linux-lts, linux-hardened
Linux系統 Linux使用技巧 Arch Linux Linux Kernel
教你在Arch Linux安裝Nvidia、CUDA、cuDNN、TensorRT專有驅動程式
Linux系統 Linux使用技巧 Arch Linux Nvidia

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。