nlzy
2020-11-15 16:41:57 +08:00
我从 2015 年开始用 Arch,使用时间说长不长说短不短。一开始也是被“保持最新”,“KISS”这些口号吸引。但用过后最大的感受就是,让软件一直保持最新版本所带来的收益,甚至不及它带来的麻烦。
有些麻烦是正常的软件更迭带来的:
比如说,Transmission 升级 3.00 导致一些 PT 站拒绝我的访问
比如说,Python 3.7 升级 3.8 导致刚配不久的 venv 路径不对,需要重新配置
比如说,binutils 太新,导致 xv6 提供的 Makefile 编译不了
比如说,agda-stdlib 太新,导致 PLFA 上的代码运行不了
还有一些是 Arch Linux 的原因:
有一段时间 Arch Linux 源里的 eslint 是坏的,甚至 eslint --version 都不行,因为有一个依赖刚升级了大版本,与旧版本不兼容。然而 npm 里面的 eslint 并没有问题,因为 eslint 的 node_modules 依赖写明了依赖的是旧版本。
有一段时间 Arch Linux 源里的 fish 输入 systemctl 就会报错,因为 Arch 更新了 systemd,在 systemd 的版本号后面加上了 "-ARCH" 后缀,而 fish 没想到过 systemd 版本号会含有拉丁字母。fish 很快就修复了,但没发新版本号,Arch Linux 源里也就一直没动静。
我的心态也逐渐发生了变化:什么“最新版本”,什么“KISS”,什么“用正确的方法解决问题”,都不如“能用”两个字重要。当然,这些都是小毛病,修一修也能用,“凑合过呗,还能离咋地”。
前几个月,Arch Linux 照常更新了 Linux Kernel 和 NVIDIA 闭源显卡驱动,我更新了,炸了。现象是使用过程中无征兆死机,日志显示 NVIDIA 内核模块解空指针。查了查谷歌和 Arch Linux 的 Bug 反馈页面,没有找到相关讨论。我知道完了,影响范围小+无稳定复现,又是闭源驱动的 bug,甚至可能还和硬件相关,想修都麻烦。于是我没报告 bug,而是回退到上一个稳定使用的版本,继续使用。过了一段时间驱动和内核又更新了,我更新了上去,几个小时后,再次死机。
因为回退了内核版本,内核和 VirtualBox 内核模块版本不兼容,虚拟机开不了机。这在意料之中,Arch Linux Wiki 说了,不支持部分升级,不支持软件降级。我有两条路,一条是跟着降级 VirtualBox,一条是离开。我选择了后者。所以我现在使用的是 Debian Stable 回复这个帖子。
回到发行版选择的问题上。如果喜欢追软件的最新版本,认同 KISS 原则,那么 Arch Linux 是一个很棒的选择;如果认同“能用就行”,认同“if it ain't broke, don't fix it”,那么 Arch Linux 真的不是特别合适。