嘛,衆所周知yaourt項目死掉了,於是出了各種奇奇怪怪的問題。之後也沒有一個佔據統治地位的 AUR Helper 存在,所以就只能比着 wiki上的簡單對比 自己隨便挑挑用。但我又想找個“最好”的,wiki的對比內容並不足夠,於是就逐漸試用各個AUR Helper,故而有此文。

本文嘗試總結自己試用這些AUR Helper的體會,並簡單進行比較。我試用的雖然肯定不是全部,但也爲數不少,故而此文多少可以方便一下其他人(如果有人看的話,咕)。

參與軟件及試用經歷

首先列舉一下我都試用了哪些軟件,然後描述我的試用感受……畢竟萬一這些軟件也死了的話,這篇文章的主體就沒什麼必要看了。

在選擇之前,我是抱着尋找一個「和yaourt一樣」的軟件的心態去的,於是找的主要都是pacman wrapper。下面先說明yaourt中哪些功能我很喜歡,然後介紹我對各個AUR Helper的試用體會。說來也有趣,在使用過程中,我發現一些工具提供的一些新功能超出了我的預期,甚至有些連想都未曾想到,但沒有一個軟件完美完成了我所喜歡的yaourt上的功能。

yaourt

因爲yaourt是一個pacman wrapper,所以我在需要混雜倉庫和AUR的時候,都是直接上yaourt的。在yaourt中,如下功能(好吧,可能是所有功能)是我很喜歡,並且希望任何一個AUR Helper都擁有的:

  1. 權限!不瞎要權限,需要jail時候jail住
  2. 直接丟關鍵詞做命令行參數,helper會去搜索,然後給個列表讓我選擇安裝
  3. 可以和普通更新一樣更新AUR的包
  4. 升級列表以詳細視圖展開(同時列出版本變化、新包)

(然而在試用了各個其他AUR Helper後,我發現有些功能還真是只有yaourt做了……)

trizen

在yaourt掛掉後,我換用的第一個就是trizen(雖然我現在不太想得起來爲什麼當時選用trizen而不是別的什麼了)。因爲它可以完成我對一個AUR Helper的一切基本要求,所以我用了它相當長一段時間(幾個月到一年的樣子)。

除了基本預期以外,它還有一個我未曾想到的實用功能:列出AUR上的包時同時列出其最後更新日期(並排序)。這點給了我極大方便,因爲時不時會遇到一個軟件在AUR上有數個包的狀況,而有了時間則可以很簡單地進行打分並選擇。

另外,它還會將AUR上該包的近期評論獲取過來並打印出來,這點也挺方便的,畢竟在AUR淘包的時候時不時會碰到有小問題、但評論已經指出或者提供解決方案了的。(然而坑爹的是trizen的自動模式不會跳過這個步驟,仍然會打印出來然後飛快掠過……)

但最後我還是離開了trizen去尋找其他軟件。其中一個次要原因是它是用perl寫的,而主要原因則是它對 split package 的支持很差:

有更新時,split package會被反覆打包(次數是該包所分出的包數)。 由於當時我在自己機子上打包apparmor,而apparmor會分出好幾個子包,這樣每次更新時都要反覆編譯;類似的,linux-apparmor也是,而這個包反覆打包的時間成本太高。

yay

我第二個用的是go語言所寫的yay,畢竟我對編譯型語言的喜好是超過了腳本語言帶來的方便的(以及python的更熟悉感)。同樣,這個軟件也可以完成基本要求,而且對split package的支持正常,因而是我直到現在的主力AUR Helper。

在直接用關鍵詞做參數去搜索時,yay返回的結果的排序比較令人意外:不是按字母序,而似乎是按熱度來排。這種排序方法見仁見智,我雖然不太喜歡,但基本還能接受。 應該是出於同樣的因素,trizen的列出日期功能在yay上也沒有。

如果需要(只)更新AUR軟件,可以通過 yay -Sua 完成。yay在這一步表現很合理,沒有跟我要root權限(因爲只列出軟件列表)。

但yay在有個地方搞砸了權限:當打算安裝AUR的包,並且該包有倉庫中的依賴的狀況下,在安裝完倉庫中的依賴、即將從AUR下載數據時,yay會跟我要root權限。這個行爲讓我百思不得其解,因爲如果AUR包沒有新的倉庫依賴時,yay是不會跟我要root權限的。

aurman

我使用的第三個是aurman(當然事實上從aurman開始先後順序就無所謂了,因爲是同一天在嘗試,隨意選擇的順序)。整體而言,aurman不是我要的東西,但有個地方我很喜歡。

例如,aurman不支持直接輸入關鍵詞搜索。這樣在看完列表之後,還要手動再敲一遍內容或是複製,實在是麻煩。

再比如aurman對部分參數的解析有些莫名其妙。比方說 aurman -Sy 按理說應該提示sudo然後更新索引/數據庫,但aurman跟我說 !! -y without -u is not allowed! ……

但aurman最讓我惱火的,則是它自作聰明去 推測 我的目的。我系統上有個包缺少一個依賴(我故意的),於是在我用aurman做任何事情的時候它都會打算卸載掉那個包,而且 沒有辦法手動干預 。這點是對Arch理念的極大背棄(而我則正是因爲Arch持有這些理念纔選擇用Arch),所以沒什麼說的,走好不送(於是我也沒做其他測試)。

而話說回來,aurman有一個功能我還是很喜歡的:它會類似gentoo那樣從官方下載新聞,然後提示閱讀。說實話,我之前試用gentoo看到這個設計的時候簡直驚爲天人,特別希望Arch也能有一個(因爲進行公告的基本都是很重要的事情,而我又不想沒事就去看)。

pikaur

隨後我試用了pikaur,但因爲下列原因沒有仔細使用,因而對其特性也不甚熟知(有人願意補充的話我很樂意添加進來)。

如用其他AUR Helper一樣,我首先試的是直接加關鍵詞搜索。很不幸,pikaur並不支持該操作。更煩人的是,它不會告訴我說是它不支持,而是跟我要root權限,然後直接轉交給pacman(於是pacman理所當然地跟我說不支持)。

然後我試了 -Ss 搜索,嗯,很好很正常,而且還有個小進度條。然而,當我試圖去裝一個AUR上的軟件的時候,pikaur直接跟我要root權限。WTF!?你難道不應該先去檢查一下是不是AUR上的麼???

類似地,pikaur有一個選項是僅升級AUR的包,很好。然而當我使用 pikaur -Sua 時,呵呵呵呵……還跟我要root權限哦……

另外,很巧的是,當我給過pikaur一次root權限後,再次執行它執行到需要root權限的地方時不會再需要輸入密碼。這意味着pikaur是手動sudo調用了另一個軟件,然而我在 pacman -Ql pikaur | grep /bin 中沒有發現其他文件。換言之,pikaur調用了一個 不知道在哪 的軟件。這點讓我實在不放心。

rua

嚴格說起來rua並不應該出現在這個列表中,因爲它不是一個pacman wrapper。但這個名字實在是太好了,所以我忍不住去用了一下(然後發現它居然是rust寫的誒)。

然而,試用結果……Hmm……它支持的功能非常 簡單 ,甚至連打印列表都沒有,故而對我來說完全不夠用。

總結

簡單總結一下,那就是沒有一個軟件達到了我的基本要求,沒有一個可以作爲yaourt的完美替代品。其中很多軟件連權限的自我管理都做不正常,其他功能更是讓我不太能相信……

部分軟件有一些挺喜人的設計,我很希望能有一個AUR Helper在完成yaourt已經做到的功能後(不一定要複製,畢竟yaourt也不是什麼神),去支持一下這些功能。

希望不會兩三年後仍然沒有好的AUR Helper……不然估計到時候要麼已經換到別的發行版(和AUR之事無關),要麼會去自己手擼一個(估計會用Rust寫?)……

Renyuneyun

Arch Linux用戶;閒暇時爲FLOSS做做貢獻;認同自由軟件理念。自認唯物論者;反對任意形式的迷信;在意社會問題;拒絕先入爲主。

Renyuneyun

Join the discussion