使用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套件優點為何?#
AUR自由度很高,什麼都能收,舉凡桌布、桌面環境、付費軟體(咦)、遊戲安裝包都有人提供。像是Google Chrome、Soptify、Nvidia cuDNN、Autodesk Maya之類的都有人打包。
有些軟體裝起來需要打一堆依賴(例如依賴Wine的Windows軟體),AUR指令稿一發下去就能搞定。
如果維護者PKGBUILD寫得好,它可以把原本只有發表tar.xz的軟體整合到你的系統,使其圖示出現在應用程式列表。
AUR的軟體不需要事先打包也能上,它等同是一套自動化編譯系統,所以有些軟體剛出來,作者會優先在AUR發表套件。
有些人嫌自己手上軟體版本不夠新,也會到AUR找貼近軟體上游git儲存庫的AUR套件來裝。如此一來你就能在一個系統上混合不穩定與穩定版的軟體。
3. 安裝AUR套件的注意事項#
AUR的套件風險很大,因為依賴用戶自發監視,且AUR安裝的軟體權限跟用pacman安裝的沒什麼不同。
Linux的套件庫依賴社區成員之間的信任,投毒不是沒有,真的曾經 有人在AUR放病毒,儘管後來被刪除了,但安裝還是要小心。
當你在AUR網站看到一個套件的時候,應該先檢查AUR頁面的
License
欄位,開源軟體你可以稍微瞄一下PKGBUILD裡面的內容是不是來自開源組織的網站。但如果你安裝的是閉源軟體,就更應該注意軟體來源,閱讀Sources
處提供的使用者授權合約,還有下面用戶的留言怎麼講的了。再看一下
Last Updated:
,確認維護者有沒有常常更新,並看該套件有沒有被標記為Flagged out-of-date
,免得一裝依賴項目全部爆炸。有些AUR套件是需要等編譯的(當你安裝時看到進度條出現就知道了),例如
rustdesk
。如果你不想每次都等編譯,可以另外找找看有沒有人提供-bin
版本的套件,以rustdesk
的例子來說就是rustdesk-bin
。有的軟體會提供
-git
的版本,這代表會自動追蹤上游最新的開發分支,比較不穩定。負責打包的用戶可能也沒時間檢查,所以儘量不要安裝這個版本。別忘了,如果你連在AUR都找不到想要的軟體,你還有 Flatpak、 Snap、 AppImage、 Distrobox等安裝軟體的管道。
4. 安裝AUR套件前建議開啟的選項#
- 安裝依賴套件
sudo pacman -S base-devel
- 首先,編輯makepkg的設定檔,設定編譯選項。
sudo vim /etc/makepkg.conf
- 因為有些AUR套件下載下來是要從原始碼編譯的,建議加入以下選項(或者將MAKEFLAGS取消
#
註解),讓系統編譯的時候可以使用全部CPU加快速度。
MAKEFLAGS="-j$(nproc)"
- 如果你的系統性能比較孱弱(例如跑在開發板上),那麼就取消壓縮套件的機制,在AUR軟體編譯完後直接安裝。
PKGEXT='.pkg.tar'
SRCEXT='.src.tar'
- 再來,如果套件下載速度很慢,請編輯
/etc/pacman.d/mirrorlist
檔案,設定要使用的鏡像站。
sudo vim /etc/pacman.d/mirrorlist
- 從 鏡像站列表挑一個,這裡我使用台灣國網中心的套件庫。
Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch
- 更新套件庫
sudo pacman -Syy
但請注意,AUR不收錄「軟體」本體,此處的鏡像站只有AUR的依賴項目會用到(因為這些套件是從Arch Linux官方套件庫下載的),AUR軟體要另外下載。
比如說Google Chrome,在從AUR安裝的過程中,它還是要連線到Google伺服器去抓安裝檔的。
所以如果你不手動檢查PKGBUILD,是無法預測AUR會從哪邊下載套件的。如果你的網路連線受到干擾,那麼建議找個全域VPN繞過去,避免頻繁換鏡像站的操作。
5. 如何手動安裝AUR套件#
這裡內容僅供參考,身為終端使用者,我們很少用手動安裝AUR的方式,因為不好管理,所以會安裝後面講的套件管理器。
點選複製你要安裝的套件網址
用git複製儲存庫
git clone https://aur.archlinux.org/google-chrome.git
- 進入目錄,檢視PKGBUILD內容有無問題
cd google-chrome
vim PKGBUILD
- 接著使用
makepkg -si
指令,讓pacman自動尋找依賴套件,再按照PKGBUILD的內容,下載檔案,打包成Arch Linux的套件。
makepkg -si
AUR下載的套件經過本機打包後,會變成Arch Linux的標準套件格式(pkg.tar.xz),並交由pacman安裝。
如果要查詢哪些套件是從AUR安裝的,使用
sudo pacman -Qm
指令。
6. 如何用yay自動化安裝AUR套件#
AUR也可以有套件管理器!
套件管理器(Package Manager)的講法不精確,正確來說是AUR助手(Helper)才對。
AUR助手就是幫你自動完成上述手動安裝PKGBUILD的操作,簡化操作流程,變成用幾行指令就能管理AUR套件,這樣日後要更新就容易多了。
常見的AUR助手有yaourt、yay、paru、pacaur,圖形版有pacmac。其中Go語言寫的「yay」比較受歡迎,它將常用的操作封裝成一行指令就能解決。
- 根據 官方Github指示,用以下指令安裝yay
sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
- yay的指令跟pacman很類似,例如搜尋套件
yay google-chrome
- 安裝套件
yay -S google-chrome
yay的指令很聰明,它會自動判斷套件是否有進Arch Linux的主套件庫,如果有的話就優先下載那邊的版本,沒有的話才去AUR上找。
安裝套件的時候,yay會問使用者是否要查看PKGBUILD,通常直接Enter下一步,等待其安裝完成。有時候需要打密碼。
- 解除安裝套件的指令:
yay -R google-chrome
- 更新所有套件的指令:
yay -Syy
yay -Syu
注意:yay -Syu
等同pacman -Syu
全系統更新。如果你太久沒更新可能套件依賴會崩掉,所以才會先更新系統再安裝AUR套件。
- 如果你不想一個一個確認,那麼就加入
--noconfirm
選項自動同意,並使用--sudoloop
防止sudo密碼太快過期。
yay -Syu --noconfirm --sudoloop
yay會將下載的套件快取檔和PKGBUILD放在
~/.cache/yay"
,嫌太肥可以用yay -Sc
指令清除。AUR安裝套件格式跟pacman安裝的套件是一樣的,如果要列出本機上AUR安裝的套件,使用以下指令:
pacman -Qqe | grep -v "$(pacman -Qqm)"
7. 如果AUR不符合需求就修改PKGBUILD吧#
PKGBUILD的內容請看 Arch Linux 第一次打包就上手 - 書術方隅的介紹,他寫的很清楚了。
PKGBUILD的檔案格式清楚易懂,遇到問題的時候你也可以嘗試自行修改。
這裡還有個實際案例: 讓Arch Linux x86架構的套件能裝在Arch Linux ARM上
8. 不是Arch Linux也想裝AUR的套件?#
透過 Distrobox,你就能在Ubuntu、Fedora、openSUSE安裝AUR的軟體,並將其整合到宿主系統。
只要不是涉及修改系統底層的軟體應該都能跑起來。