最初的心路历程

高考结束之后就开始瞎折腾家里的小破机子,很早就听闻不可变发行版(Immutable Distribution)这个非常炫酷的概念,于是趁着闲暇时间尝试将原本装的 Deepin 更换成了现在的 Fedora Silverblue 40,尝试一下“不可变”的世界是什么样的。

在最初的发行版选择上,我曾将以下的这些发行版纳入考虑(不是一个 tier list):

  • NixOS:老牌不可变发行版,软件包数量似乎是最为丰富,然而似乎不遵守 Filesystem Hierarchy Standard,使得不少软件需要 patch-ELF 之后才能使用
  • Fedora Silverblue:由 RedHat 维护的发行版,使用 rpm-ostreeflatpak 管理软件包
  • openSUSE MicroOS:由 SUSE 维护的发行版,使用 transactional-updateflatpak 管理软件包

在权衡利弊之后,咱最终还是选择了 Fedora Silverblue ,毕竟 NixOS 需要学习一门额外的 DSL(汗),再加上 Flatpak 是 RedHat 的东西,那自然是优先考虑她了捏~

于是乎,Ak4ri 来到了全新的世界——

使用体感?

唔…若是让咱来形容这个发行版,目前的体感可以说是依托答辩了,由于不可变发行版的各种奇妙特性,使得这个系统的使用方法是与其他普通的发行版是有一定差别的,虽然说若只是在使用方法上不太一样那似乎还好说,但是整体感受却远非如此…

Flatpak?

首先是 Flatpak,这是 Silverblue 以及 MicroOS 等不可变发行版所推荐使用的包管理器,在软件包跨发行版依赖处理上是做得比较优雅的,不同于 AppImage 那样所有软件都需要携带一份重复依赖的丑陋做法(噢我的老天爷,如果您喜欢这样的一种软件包发行方式,那我更推荐您使用最新的视窗操作系统),FLatpak 多个软件包可以共享同一运行时库,对于不同需求的软件包再行分支,在很好地减少了冗余的同时完美地让软件包能够成功在不同的发行版上运行。

然而,或许正像那句老话所言,“一切便利都是有代价的”,Flatpak 的应用极少暂且不提,我甚至无法通过它来安装一个 vim ,因为我无法像在其他发行版上使用普通的包管理器那样生活:在 flatpak install vim 之后,我在终端中输入 vim 是无法唤起 vim 的——虽然此时在 KDE 的应用列表中可以看到一个 Vim 的图标。

其次是人人都爱的 vscode ,在 Flatpak 上只有一个 unofficial 版本,也存在不少 bug,例如:当我在使用深色主题时,vscode 中的 menu bar 依旧是白色(浅色主题),不知道是否是 Flatpak 对软件环境限制的缘故🤔

最后是 Edge,通过 FLatpak 安装的 Edge 浏览器总会时不时卡死,不过这或许是微软的锅😅

虽然 Flatpak 用起来似乎总有些奇奇怪怪的问题,但我们依然能够使用“侵入式”的软件安装方法(对于不可变发行版而言,修改了系统配置应当能称得上这个词?):使用 rpm-ostree 更改当前系统的软件包集合。

rpm-ostree

现在让我们来谈一谈 rpm-ostree ,这是一个有点类似原生软件包管理器的东西,虽然说软件包似乎比 Fedora 原生的 dnf 要少(似乎是这样?),但是至少,我通过 rpm-ostree install 安装的 vim 是能够成功启动的。

在咱看来这似乎是有点类似于“给系统做版本控制”的概念,每次开机运行中的 rpm-ostree install 命令组集合会生成一个新的系统配置,从而通过类似快照的感觉方便进行系统回滚,保持 “Immutable”。

虽然说在 rpm-ostree install 之后我们并不能直接在命令行运行该程序,但大部分应用在安装完之后 都可以通过 rpm-ostree apply-live 来刷新当前系统环境以使用,只有少部分应用会需要重启后进入新生成的系统环境,但若是像使用普通发行版那样把 rpm-ostree 当成一个常规的包管理器,似乎是不怎么 “Immutable” 的一件事情捏。

所以接下来让我们来看看更加通用的软件包使用方式:toolboxdistrobox

Toolbox 与 Distrobox

不同于 FLatpak,这两个工具都有点类似真正的“容器”的感觉(好吧,我似乎应当承认他们确实就是普通的容器环境?),其依赖于 podman 或是 docker 这样的常规的容器管理软件,在 Silverblue 上默认安装了 toolbox 与 podman,不过对于我而言 distrobox 则是用起来更加舒服(其实就是更加熟悉罢了)的那一个(但他需要手动通过 rpm-tree 进行安装)。

有了 distrobox ,咱终于可以开始正常使用 vscode 了,只需要先创建一个 fedora 环境,并在其中使用 dnf (噢,忘了说一句题外话,我并不玩地下城与勇士)正常安装就行了,之后我们需要一条将他导出到我们的桌面环境中的魔法咒语——

1
distrobox-export --app code

噢,忘了说了,在这样的 vscode 当中,似乎无法使用 Fcitx 输入中文…

SDDM 之殇

遗憾的是,Silverblue 的 SDDM 似乎并不支持增加新的主题,也不支持更换原有主题的图片,从而使得我每次开机都只能看到 Fedora 默认的壁纸,那这就很难受了…

何去何从…

虽然体感似乎不是很好,但是反正假期还长,咱还是会再坚持使用一段时间的 Fedora Silverblue,体验体验“Immutable”。

但或许不会一直使用下去?不过说不定用着用着就和隔壁苹果一样自适应来呢(雾)。