每个 Linux 用户都有自己的更新翻车的恐怖经历。我自己也踩过不少坑,从内核更新导致图形驱动崩溃这样的小问题,到只有靠 Live USB 启动盘和极大耐心才能搞定的更严重问题。传统的 Linux 发行版会就地修改系统文件和软件包,如果中途出问题,出了岔子就得你自己收拾。
随着不可变 Linux(immutable Linux)的出现,就再也不用冒这个险了。起初我只觉得这种新发行版是个挺酷的概念,但在一次图形驱动更新破坏了我的桌面环境、让我搭进去一整晚去修复之后,我才真正开始重视不可变发行版。
不可变发行版的关键所在在于,重要的系统文件在运行时无法被修改。基本上,基础系统是只读的,更新是以一个完整的新镜像来部署的,而不是对大量文件逐一就地修改。这样一来,如果出了问题,你可以把系统回滚到之前那个还能用的镜像。
不可能只成功一半的更新
为什么原子更新风险更低
原子系统和不可变系统是两个密不可分的概念。“原子”这个词的意思就是每次升级操作系统时都会构建一个新的系统镜像。新镜像会作为一个整体一次性部署。这与传统的 Linux 不同,传统 Linux 使用 dnf 或 apt 等包管理器,根据更新的软件数量,可能涉及数千个文件,逐个对它们进行修改。
我现在用的是 Fedora Atomic,但像 openSUSE Aeon 或 Vanilla OS 这样的其他发行版也有相同的核心理念。Fedora 使用 rpm-ostree 在升级时组装一个新的文件系统树,然后将引导加载程序指向新镜像。如果升级过程因断电、下载损坏或软件错误而出错,你仍然可以启动进入未被改动的旧镜像。这些系统上不存在“更新只装了一半”的情况,而正是这种半吊子更新,才会导致让 Linux 用户做噩梦的各种故障。
真正让我入坑不可变原子发行版的,就是回滚机制。在 Fedora Atomic 上,每次成功更新都会创建一个新的部署版本,之前的版本会一直保留,直到你手动清理掉。如果更新出了问题,你不需要马上去排查问题。只要重启,按住一个键进入 GRUB 菜单,然后选择之前的部署就行。或者,如果你已经登录,只想撤销最近那次改动的话,可以运行 rpm-ostree rollback 命令。
可逆更新,让人放心
也让我更愿意升级了
对我来说,不可变 Linux 不只是灾难恢复那么简单。我换过来的一个很大原因是,我知道每次更新都能轻松回滚,心里就踏实了,而且我的主力机不会因为一次更新就挂掉。在切换之前,如果我有重要任务要完成,我会拖着不升级,就怕万一出问题,清理起来又得花不少时间。现在只要一有更新,我就马上装。
当最坏的情况不过是回滚一下、只花我几秒钟时间时,抢先体验新东西就没什么坏处了。用我以前那套配置时,每次更新总会有点犹豫,尤其是我正干着活、一点停机时间都耽误不起的时候。结果是,不可变性反而让我的系统比以前任何时候都更新得更勤。
你确实会牺牲一些灵活性
不可变发行版上装应用的方式不一样
不可变发行版的缺点在于,它们会要求你换一种方式来安装和管理软件。说实话,对我这种在传统 Linux 上摸爬滚打了快二十年的人来说,这得花不少功夫去适应。你不能再像以前那样直接跑个 dnf install 就把软件包装进基础系统了。凡是不走 Flatpak 或容器的,都得用 rpm-ostree install 命令一层层叠加到镜像上,而且还得重启才能生效。对于那些喜欢折腾系统的用户,或者想运行那种默认根文件系统可写的软件的用户来说,这种变化可能会让人觉得束手束脚,甚至挺让人抓狂的。
刚开始适应的时候确实让我挺烦的。让我惊讶的是,我真正需要的大多数软件都有 Flatpak 版本,而且运行良好。我只需要在基础镜像上再叠几个命令行工具,而且就连这一步也没费什么劲。这仍然是个取舍,但我确信,为了以后再也不怕更新,这个取舍值得做。
它改变了我对更新的看法
能用一条命令撤销一次糟糕的更新,这种功能,你不花一下午排查故障是体会不到它的好的。不可变且原子化的发行版,解决了传统 Linux 没法彻底解决的一个问题。现在我用 Fedora Atomic 已经有一阵子了,再换回去,对于我每天依赖的主力系统来说,感觉就是个鲁莽的决定。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.