嘛,众所周知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都拥有的:
- 权限!不瞎要权限,需要jail时候jail住
- 直接丢关键词做命令行参数,helper会去搜索,然后给个列表让我选择安装
- 可以和普通更新一样更新AUR的包
- 升级列表以详细视图展开(同时列出版本变化、新包)
(然而在试用了各个其他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写?)……
您可以在Hypothesis上的該群組內進行評論,或使用下面的Disqus評論。