如果你今天访问 Flatpak 官网,第一条列出的优势是:"Build for every distro: create one app and distribute it to the entire Linux desktop market."(构建适用于每个发行版:一个应用分发到整个 Linux 桌面市场)。支持的发行版列表中包含了 Void Linux、Guix 和 Alpine——这三个发行版的共同点是使用的系统初始化工具不是 systemd。但据 OSnews 报道,Flatpak 的下一个主要版本很可能将引入对 systemd 的依赖。
在 Linux App Summit 上,Arian Vovk 和 Sebastian Wick 发表了一场关于 Flatpak 未来的演讲。当前版本的 Flatpak 将继续获得大量改进,但其数十年历史的设计限制越来越难以突破。因此,他们同时在规划和开发"Flatpak Next"(或 Flatpak 2.0),实际上是基于这些年积累的经验对 Flatpak 的重写,使用了自 Flatpak 1.x 初始设计以来获得支持的现代技术和理念。
值得注意的是,演讲中讨论的一切都是计划性的,尚未编写一行代码。这意味着所有计划都可能发生变化,最终结果可能与演讲中详细介绍的内容大不相同。
演讲一开始就解释了他们希望将权限管理从 Flatpak 移至服务层,通过一个新的服务 systemd-appd 来实现。systemd-appd 为应用程序提供标识符并存储其权限,系统其他部分可以查询这些数据。这反过来又启用了一系列其他功能,其中最重要的是 subsandboxing(子沙箱)。目前,计划是在当前版本的 Flatpak 中引入此功能,从而引入 systemd 对 Flatpak 的依赖。
从 Vovk 的表述来看,他们曾打算对不使用 systemd 的发行版和用户"超级体贴",最终可能会得到一个类似于 systemd-logind 那样的结果——被提取为独立守护进程 elogind,让使用其他 init 系统的发行版仍然可以使用依赖 systemd-logind 的桌面环境。他们可能希望 systemd-appd 也发生类似的情况,从而确保 Flatpak 在不使用 systemd 的发行版上仍然可用。
然而,Void 或 Alpine 等发行版的用户担心 Flatpak 在其系统上的未来。当 Flatpak 对 systemd 产生硬依赖时,Flatpak 将不再适用于不使用 systemd 的发行版。演讲引发了质疑——但可悲的是,这些问题似乎被指向了一个技术上不涉及 Flatpak 开发的人,而此人的回复"不太有帮助",通常是侮辱性和煽动性的。虽然他实际上不涉及 Flatpak 开发,但足够多的人认为他是,导致有毒的讨论产生。拥有真正友好问题的用户遭到嘲讽和侮辱,事情从这里失控,卷入了疯狂的反 systemd 红帽阴谋论者。结果是每个人都输了,Flatpak 的开发者们"不愿意再花时间在这种破事上"。
最终结果很可能是:在未来几年,Flatpak 将获得对 systemd 的依赖,而且可能没有任何可以让独立守护进程复制 systemd-appd 功能的便利设施。换句话说,Flatpak 将不再能够吹嘘其"构建适用于每个发行版"的能力,因为它将不再与发行版无关。这是一件憾事,因为 Flatpak 为用户满足了真正的需求,无论他们使用什么 init 系统。
参考来源:https://www.osnews.com/story/145071/flatpak-will-depend-on-systemd/