上个月,随着 Linux Mint 20 的发布,Linux Mint 开始默认禁止安装 snapd 工具。直接起因是,从 Ubuntu 19.10 开始,系统会直接从上游覆盖 Chromium 的 APT 软件包,然后自行下载 snapd 工具,随即以 Snap 包的形式安装 Chromium 浏览器。整个过程以 root 身份运行,自动安装,并未获取用户授权。
在相当长的一段时间内,Linux Mint 是除 Ubuntu 之外拥有最多用户的 Linux 发行版。基于 Ubuntu 和 Debian 的 Linux Mint 继承了二者的众多特性,它与 Ubuntu 的软件库也几乎完全兼容,并采用 APT(Advanced Packaging Tools,高级打包工具)进行软件包管理。直到 2014 年,Ubuntu 推出 Snap,开始用 Snap 和 APT 并行分发软件。
不同于传统的 Linux 软件包管理方法(如 APT 和 RPM),Snap 包含了软件运行需要的所有依赖关系,并将其全部捆绑在一个系统镜像中,这在一定程度上简化了软件管理过程。不仅如此,统一化的 Snap 软件包能够在不同 Linux 发行版上运行,开发者无需再针对不同的发行版分别构建,软件部署的难度有所降低,软件开发和最终部署之间的延迟也得以缩减。
Canonical 最初将 Snap 作为一份跨平台解决方案提供出来,但如今在 Linux Mint 等看来,它本身更成为一个问题。事实上这并非 Linux Mint 团队首次公开发声,他们在一年前就表露过对 Snap 的担忧:“当它无缘无故替换掉软件包时,当它开始损害我们与上游项目和软件供应商的互动,并使我们别无选择时,它就成为了一种威胁。”
当时,Linux Mint 团队表示希望与 Ubuntu 及 Snap 项目组进行协商。但一年后的现在,Ubuntu 20.04 中的 Chromium 软件包仍然是一个空壳子,一切依旧指向 Ubuntu 的 Snap 应用商店。因此,Linux Mint 团队决定,从 Linux Mint 20 开始,APT 将不再允许以 Snap 形式进行安装。该版本会保留 Chromium 的空包,告知用户缘由,并指引合适的获取方法。
Linux Mint 宣布不再支持 Snap 后,Canonical 终于给出公开回复。Ubuntu 工程服务负责人 Alan Pope 针对此次冲突的起源——Chromium 软件包事件——作出了回应。
Pope 认为,Chromium 不是 Ubuntu 上的默认浏览器,用户较少,受到的影响也不大。他提到 Chromium 每六周一个大版本,期间还有许多次要版本的高更新频率,要为不同的 Ubuntu 版本及各类架构提供更新并非易事,而 Snap 能够支持这样高频率的更新。用户通过 Snap 也能够并行安装稳定版、测试版或开发版等多个不同发行版。
不过,整个事件的争议焦点不在于此,不止 Chromium 会遇到这种情况,Canonical 对 gnome-software deb 软件包也施加了同样的方法。Canonical 推行 Snap 不完全是为了帮助简化软件包管理过程,更是为了自己的用户群增长做考虑。
确实,为 Linux 桌面构建应用存在困难。前 KDE 董事会成员 Frank Karlitschek 在 2019 年的 Linux 应用峰会上曾坦言 “Linux 应用程序只有四到五百个,macOS 和 Windows 上却有数万个”。Linus Torvalds 也在去年感慨 “The Linux desktop is in trouble”(Linux 桌面陷入了困境),因为 “我们没有一个标准化的 Linux 桌面”,对于许多开发者来说,这是一大阻碍因素。
真正惹恼 Linux Mint 的,是 Canonical 对待 APT 软件包的态度,和剥夺用户权利的垄断式行为。Linux Mint 团队用 Spotify 做例证:当一个 Fedora 用户想要安装 Spotify 时,会被跳转至 snapcraft 页面。与此同时,Spotify 不再提供 RPM 软件包、appimage、Flatpak 或其他格式,用户别无选择,只能从 Snap Store 下载。
常与 Snap 一同被提起的 Flatpak 也被 Linux Mint 团队拿来作比较。相对而言,Flatpak 更加自由,它允许任何人创建商店,它的客户端也能够与多个商店建立联系,当双方意见不合时,开发者可以选择创建自己的 Flatpak 商店,而不一定要在 Flathub 发布应用。
相较而言,Snap 发布之初就只有一个客户端,无法与多个服务器通信,这样的模式让 Linux Mint 团队从一开始就感到担忧。起初,他们以为,“只要 Snap 没有成为 Linux 的发布标准,只要开发者持续分发软件包,只要 Snap 不影响到已经拥有的东西,就可以了”。如今事情的发展显然不在预期。
在 Linux Mint 团队看来,原先使用的 apt/dpkg 等软件包管理器更成熟,也更为自由软件着想,不商业化,涉及的东西没有那么多,只要给用户授权并提供发行版就好。而 Snap 包无法被修改、重构、打补丁或是镜像。现在 Snap 甚至做得过头了,借由 APT 软件包来安装自己受商业控制的软件包管理系统,这完全打破了 Snap "不会取代 APT" 的承诺。
一年前发布的博客文章中,Linux Mint 的负责人 Clement 曾指出 Snap 的好处:可以提供 Linux 之前无法访问到的软件。他表示 “希望有一天可以将 snap 集成到 Linux Mint 中,尽管市场可能会受到影响”。目前,尚不清楚双方是否还会展开对话,以找寻合适的解决方案。
借 LWN.net 之言,“希望 Linux Mint 的这一举措能够促使事情朝着更开放的方向发展,以开放形式实现的 Snap 打包系统将会是整个 Linux 社区的胜利”。
关键词: