Flatpak:让同一份应用包跑在所有 Linux 发行版上

要解决的问题:依赖地狱

在 Linux 上分发桌面应用,长期绕不开依赖问题:同一个程序在不同发行版上可能因为库版本、路径约定不同而装不起来。Flatpak 的思路是把应用和它需要的运行时一起打包,运行时与系统本身相互独立,于是同一份应用包可以在不同的发行版上以相同的方式安装和启动。

flatpak application running on desktop

沙箱与权限

它与系统之间隔了一层沙箱:应用默认看不到整个文件系统,也不直接拥有设备访问权,需要读写某个目录或使用某个设备时,要在权限里显式声明。这种模型让应用的行为边界更清晰,也让使用者能在安装前大致看清一个程序会接触哪些资源。1.18 版新增了更细的设备权限条件项,应用可以只申请需要的那一类设备,而不必开口子申请全部。

应用从哪里来

最常见的来源是 Flathub,一个聚集了大量应用的中心仓库,命令行里用一条安装指令就能装好,图形界面的软件中心通常也内置了它。除了官方仓库,也可以自行添加第三方仓库;需要注意第三方仓库不经过同样的审核流程,添加前应确认来源可信。1.18 版还支持直接从 OCI 镜像安装,并改善了更新失败时的提示信息。

flathub store listing

和 Snap、AppImage 的关系

这三者都在解决同一类问题,但侧重不同:Flatpak 在发行版覆盖与应用数量上占优,沙箱模型较为成熟;Snap 与 Ubuntu 集成更紧密;AppImage 最简单,一个文件即可运行,但不带集中更新与统一商店。对多数桌面用户来说,把 Flatpak 作为补充渠道、系统级工具仍走发行版原生包,是比较稳妥的组合。命令方面,安装、更新、查看权限分别是 flatpak install、flatpak update 与 flatpak info --show-permissions。

Flatpak 的价值在于把「应用能在哪台机器上跑」这件事从发行版差异里解耦出来,同时用沙箱与权限让安装行为可审视。它不替代系统包管理,而是补上跨发行版分发这块短板。

Flatpak下载地址
支持的操作系统: Linux