AUR 及 Arch Linux 第三方包存在的问题

情景

当年,你还是一个精通 Windows 安装和各种面板设置的懵懂少年/少女。作为电脑高手,你当然也精通 Ubuntu 等桌面发行版的安装和各种第三方软件源的配置,但也仅此而已了。

终于在“I use Arch btw”的冲击下,你第一次尝试了安装 Arch Linux,你惊呆了,你第一次了解倒了发行版的底层集成,Arch Wiki 中的内容让你深深着迷。

虽然你是电脑高手,但各种开源软件隐含式的安装介绍还是让你望而却步,而当你在 AUR——Arch User Repository 上轻易找倒这些软件后,你再一次发出惊叹——原来我可以直接伸手啊。

时间流逝,你渐渐成为 Linux 高手,你精通 Linux 桌面和服务器的问题解决,你知道 Makefile、Autotools、CMake、Meson 等各种构建系统的安装范式,你当然能看懂也会写 PKGBUILD,你沉浸于在 #archlinux-cn 免费解决问题、装逼而被小白顶礼膜拜。

作为 Arch Linux 高手,你长期使用 AUR 中带 -git 后缀的 VCS 包 替代官方仓库包以获得最新特性,你使用 -full 后缀的包以开启不自由的软件功能,你安装的 AUR 包上了两位数,你甚至自己维护了 AUR 包并学会构建自己的第三方仓库

或是因为安装了太多的 AUR 包,或是维护了太多的 PKGBUILD,你经常会碰到如下情况,渐渐地你力不从心。

问题

  • VCS 包使用的 pkgver() 导致不可重现
  • 依赖地狱,包名碰撞,模糊依赖
  • 隐含依赖某一时间点的官方仓库(和 AUR)环境,成功构建没有绝对保证
  • 维护花费精力
  • 没有命名空间,包名冲突(其中之一导致倾向于发布补充包而不是 fork 基包添加补充功能)
  • 补充包不一定对应基包版本,导致如插件 API/ABI 版本不兼容

解决方案?

  • Nix/NixOS..
  • 明确依赖,但 Arch 是滚动更新,或许永远没有解决方法(使用测试缓解)