- 由 LWN 订阅者提供:LWN 网的订阅者使本文及周边内容成为可能,若欣赏其内容可购买订阅。
Linux 应用峰会(LAS)上的 Flatpak 情况:Sebastian Wick 称按多项指标看 Flatpak 表现良好,其应用打包格式受上游开发者和用户欢迎,越来越多应用在 Flathub 应用商店发布,还被 Fedora 等 Linux 发行版采用,但他担心 Flatpak 项目本身发展停滞,能审核和合并代码的开发者太少。
- Flatpak 基础:由 Alexander Larsson 于 2007 年起开发,2015 年以 XDG-App 发布,2016 年更名为 Flatpak,借鉴 IKEA 的“flatpacks”。提供命令行工具、构建工具、运行时等,利用多种技术实现应用隔离,内容主要通过 OSTree 交付,2018 年起支持 Open Container Initiative (OCI) 图像,其“Under the Hood”页面介绍了各部分的配合。
- 发展放缓:Wick 称看似 Flatpak 项目一切良好,但深入看已不再积极发展,虽有维护代码和修复安全问题的人,但重大变化不再发生,有很多新功能的合并请求但无人负责审核,关键人员如 Larsson 已离开项目,新贡献者难以参与,反馈和审核周期长。例如 Red Hat 的一项工作,原提交者离开后才被 Wick 重新拾起并审核。
- OSTree 和 OCI:OSTree 在某些方面成功但未积极发展,开发人员用于 OSTree 的工具有限,而 OCI 图像有更多可用工具,虽有 OCI 相关改进等待审核并入 Flatpak,如添加 zstd:chunked 支持的 pull 请求自 2023 年 9 月提交后未受关注。
- 缩小权限:Flatpak 关键功能是沙盒化应用并限制其对系统的访问,新增了“缩小”沙盒和提供更受限权限的功能,但系统安装的 Flatpak 可能不支持新功能,如--device=input,需要应用能默认使用新权限并在旧版本系统上回退,类似情况也存在于 xdg-desktop 门户和音频处理中,且 Flatpak 目前不支持嵌套沙盒和命名空间。
- xdg-dbus-proxy:Flatpak 应用不直接与 D-Bus 通信,而是通过 xdg-dbus-proxy,Wick 希望将过滤从 xdg-dbus-proxy 直接移到 D-Bus 消息代理并基于 cgroups 路径提供策略,以实现更动态的策略,目前 Flatpak 应用间不能通过 D-Bus 通信,网络命名空间存在问题,如 AusweisApp 暴露本地服务给所有应用,项目需为 Flatpak 应用创建网络命名空间,同时 NVIDIA 驱动问题也亟待解决。
- Portals:Portals 是提供多种 API 的 D-Bus 接口,Flatpak 可通过授予沙盒化应用访问权限来进行 D-Bus 调用,Portals 对 Flatpak 很关键但仍有很多需改进之处,如 Documents 门户的权限模型,Wick 有很多关于 Portals 的想法,如支持自动填充密码等,且考虑用 Rust 重写相关代码。
- Flatpak-next:假设十年后无人再开发 Flatpak,若能重写应采用 OCI 几乎所有东西,这样能获得很多免费的东西,如 OCI 注册中心和工具,重新思考 Flatpak 并与更广泛的容器生态系统对齐会使一切更简单,也可考虑用 Rust 重写。
- 问答环节:关于现有 Flatpak 在项目转向 OCI 工具后的情况,Wick 称在客户端会是问题,但 Flathub 可重新构建;对于使用容器基础设施的担忧,Wick 称已有在 OCI 注册中心存储非图像的标准,但编写和合并代码困难;最后关于直接在 Flatpak 中使用 PipeWire 而非 PulseAudio 路由,Wick 称已与 PipeWire 创作者讨论如何添加支持,主要是添加 PipeWire 策略。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。