从 Artix 试用对 Linux 社区的一点思考

一直在用 Arch Linux ,然后网络上有一阵风,一直在说 Artix 比 Arch 好很多,说更自由,因为它是 systemd-free 的发行版,然后再一通痛斥 systemd。我想用我从 Arch 迁移到 Artix 的整个经历,从一个使用体验的角度来做一点点思考。

迁移

首先,Artix 提供了一个迁移 wiki ,但是里面有各种各样的问题,比如迁移里提到的一些 init initscripts 并不存在于他们的官方仓库中,并且对于runitfuse-runit 并不存在,他们也知道这个包不存在,但是还是要求安装fuse-init(replace init with either openrc, runit, s6, or suite66),但是并没有在迁移 wiki 的页面提及到这个问题。

在安装之后,Artix 并没有办法通过 gdm 进入 Gnome 桌面,当然,这或许是 systemd 的问题,因为 Gnome 一系列软件强依赖 systemd,于是我换成了 lightdm 进入桌面,从审美角度来说,gdm 默认配置下的美观程度相比于 lightdm 要好很多,所以个人自然是不太好接受 lightdm 的。这时候,我想要报告给官方这个 bug,但是我很快发现,跟 Arch 健全的社区相比,Artix 还有很漫长的路要走,因为 Arch 有专门的 bug 报告系统安全问题报告系统,你可以及时地报错,然后维护者来修复这些问题,而 Artix 一无所有,甚至我无法在他们的 git 仓库提 issues 来报错。当我去 telegram 群提及一些问题的时候,他们的管理员也是 Artix 的维护者这样回复我:

I know where the problem is. Between the keyboard and the chair.

这似乎比别的 Linux 社区要傲慢很多,不去解决报的 bug,而去解决报告 bug 的人。

当我进入桌面之后,我需要解决更多的问题,因为在这之前我是 systemd 用户同时也是 Gnome 用户,我的音响输出、蓝牙、打印机、触摸板,大部分都不需要考虑,因为 Gnome 在 systemd 作为 init 的情况下已经依赖上了。而 runit 或者其他在别人眼里遵守规矩的 init ,并没有很方便的解决这个问题,而是要纳入相应并且非常多的用户组。这似乎对我这个用惯了 systemd 的懒人来说,太过于麻烦了。

体验

或许是我使用 Gnome 的原因,很多 App 都无法在 Artix 下正常运行,比如 gnome-control-center 没有了电源控制等功能,wifi 也无法在菜单栏里选择。当然,这一切都可以说是 systemd 和 Gnome 的问题。

另外,我的一些蛮好用并且美观的 GTK App 也无法使用,比如 kooha,一个录屏软件,它很简单,也不占用太多的内存,但是它因为依赖项 xdg-desktop-portal-gnome 也比较依赖 systemd 不能正常使用。

同时我一直用 systemd timer 来备份我的笔记和书签,但是如果想要让它们工作,则需要我重新学习 Cron,相比于 systemd timer 它并不是那么易读和易写。

而之前启用一个服务,只需要 systemctl start anyservice,而 runit 则需要 ln -s /etc/runit/sv/service /etc/runit/runsvdir/runlevel@@ 一大长串的路径,查看 log 也只能去文件夹下去查看,而不是journalctl -u anyservice,还可以使用 -n 限制数量,-p 限制警告还是报错一类的信息。

一点想法

似乎 systemd 最开始推进的时候,社区一致的反感,但是经过推动,大部分发行版把 init 还是换成了 systemd,虽然 CentOS 保留了 systemV 类似风格的命令。而 systemd 也的确方便和高效的管理了系统,最初反感的只是它扩张的态势,但是从某种角度,整合各类细碎的功能,才让如今的 Linux 有了相对统一、方便的体验。

而大家所不喜欢 systemd 的一个很重要的因素是大家觉得它不是民主的,它的开发者可以私自砍掉一些自认为 systemd 不重要的功能。但是事实上,GNU 自由的本质是能者多劳、也能决定他们所创造出来各类工具的发展走向,作为一个不参与开发的用户大概率只能听天由命。这是没有办法闭源的事情,也是 GNU 下赤裸裸的事实,杀伐决断基本只靠开发者或者开发者社区,当然,这背后自然是某些企业。

但是我觉得唯一可以改变也是值得改变的是 Linux 社区的态度,很多人在各种平台都讲 Linux 用户很高傲。我觉得主要是有两个问题吧。

第一个,可能一个对 Linux 不是很熟悉的人,他想要详细报错需要了解很多 Linux 的基本操作,比如需要知道 systemd 的一些命令,如 journalctl,然后一些不太容易描述的问题,比如图形化的自定义,它可能根本就没有 log 或者报错,所以就很难把所有问题都用 log 展示出来。也请耐心,记住自己还是小白时候遇到的责难,记住那种感受,才能体会别的入门者此时的心境。

第二,刚刚使用 Linux 的新手,可能需要一些生态,他很有可能把来自 Windows/MacOS 的习惯带进来,这时候不要否定别人的需求,比如有人讲自己需要 QQ,需要微信,请不要否定他们的需求,非常反面的教材是这个 guide,总是在否认别人的需求,特别是 IM 上,人总是相互连结的社群关系,自然而然 IM 肯定都有路径依赖,Linux 社区应该给出解决方案,而不是一味的说教,当然,不能解决的时候就直截了当说明不能,承认 Linux 的缺陷不应该是一件难事。再举个例子,当 kooha 在 Artix 上不能使用的时候,Artix 应该给出解决方案,既然都说 systemd 不止是 init,那么就应该把它非 init 的领域也有相应工具去覆盖掉,而不是说你不需要、伪需求、为什么不换一个一类的话。

我是一个懒人,最后我还是切换到了有强大社区支持的 Arch,经历了这次切换,我觉得我更加感激 systemd 的出现。