Flatpak:构建和分发桌面应用程序的新框架

6 位读者喜欢这篇文章。
open here

Opensource.com

碎片化一直是 Linux 桌面的致命弱点。在无数不兼容的发行版的世界中,流行的应用程序通常仅限于一到两个最流行的发行版,并且新应用程序的创建受到阻碍。碎片化对应用程序开发人员的影响提供了一个很好的问题示例:要为 Linux 发布应用程序,开发人员必须应对不同的软件包格式和数量惊人的发行版,所有这些发行版都有自己特定的约定。对于那些确实存在的应用程序,维护和预发布测试非常困难,甚至是不可能的。

Linux 发行版不断变化的性质为应用程序开发人员增加了另一个复杂性维度。发行版的每次发布都可能带来与应用程序不兼容的更改,导致错误或完全停止应用程序工作。当问题出现时,用户通常会先遇到它们,然后开发人员才会遇到。

Flatpak,一个新的用于构建和分发桌面应用程序的框架,旨在改变这一切。Flatpak 将应用程序运行的平台与发行版解耦。这意味着,应用程序开发人员不必追逐发行版,而是可以选择他们想要使用的平台。然后,Flatpak 确保该平台在所有各种发行版上都可用。

由于 Flatpak 平台是固定的,应用程序开发人员不必担心它们会意外更改,并且他们可以在每次发布之前针对平台测试其应用程序。许多 Linux 应用程序已经提供 Flatpak 应用程序,并且正在开发更多实验性构建版本。Flatpak 网站列出了越来越多的这些应用程序

其中一个应用程序是 LibreOffice。文档基金会(LibreOffice 背后的非营利组织)的负责人 Michael Meeks 最近告诉 Flatpak 开发人员,该组织为在 Linux 上实现向前兼容性而被迫做出的“可怕的妥协”。LibreOffice 很快开始提供其办公套件的 Flatpak 构建版本,可以在 libreoffice.org/download/flatpak/ 找到。

Flatpak 是一个托管在 Github 上的独立上游项目。它符合标准,使用了 开放容器倡议 规范,这是一个旨在实现容器技术之间兼容性的 Linux 基金会倡议。Flatpak 与其他项目共享多种技术,例如 Bubblewrap 实用程序和 OSTree,并且充分利用了 Linux 内核功能。重要的是,所有这些技术和功能通常都可用于所有 Linux 发行版。

有趣的是,传统的 Linux 桌面并不是 Flatpak 唯一的目标。它可以作为跨多个行业的定制解决方案的基础,包括嵌入式和车载信息娱乐系统。这也许是合作伙伴迅速参与的原因之一。早期的贡献者之一是 Endless Computers,它正在 Intel 和 ARM 设备上为其所有应用程序使用 Flatpak。

Collabora,一家著名的开源咨询公司,正在积极关注,尤其是在嵌入式和商业应用程序方面,他们的一位开发人员已经在贡献补丁。不难想象,通用的应用程序分发解决方案可能会引起各行各业的兴趣。

挑战

回到 Linux 发行版的世界,Flatpak 确实面临挑战,其成功将取决于采用率。它当然具有兼容性的优势——Flatpak 团队设计了一个框架,该框架不需要更改底层发行版即可工作。对于发行版而言,采用只是打包 Flatpak 并使其可用的问题。这些软件包已在 Debian Experimental、Fedora 和 Mageia Cauldron 中提供,以及通过 Arch、Gentoo 和 Ubuntu 的非官方存储库提供。一旦在系统上安装了 Flatpak,Flatpak 应用程序集合就会立即可用。

Flatpak 是否会在这些发行版中默认提供是另一个问题。只有这样,它才能为软件安装提供有效的开箱即用解决方案。Linux 桌面环境(如 GNOME 和 KDE)已经在进行 Flatpak 集成,并且一个完全支持 Flatpak 的应用程序商店——以 GNOME 的“软件”的形式——即将到来。这会是 Linux 通用应用程序商店的开始吗?

访问 flatpak.org 以了解有关 Flatpak 的更多信息或加入社区。

标签
User profile image.
Allan Day 是 Red Hat 的用户体验设计师。他参与开源项目超过 10 年,并且是 GNOME 基金会董事会成员。

3 条评论

整篇文章都在谈论 Flatpak,但没有提及 Snap 和 AppImage。我相信它们可以共存。但是,只有当这些技术融合时,才能最终减少碎片化。Snappy 在许多方面都更胜一筹,Flatpak 也有其他优点……但是,学习不同的工具会造成更多困惑。

感谢 Allan 的文章。恕我直言,有点夸大其词,而且有些负面。例如“Linux 发行版不断变化的性质”(又名创新)。如果人们想要一个没有变化且安全更新很差的微软世界,那么只需关闭更新即可轻松实现。

关于主要发行版(Arch、Gentoo、Debian、Redhat)之间略有不同的目录结构,可以通过添加一个小的抽象层轻松解决。实际上,您的文章归结为 Debian 与 Redhat,因为基于 Arch 和 Gentoo 的发行版具有基于源代码的软件包。在 Debian 中已经存在 Redhat 打包实用程序,反之亦然。

尽管如此,如果 Flatpak 可以在不影响功能、完整性、安全性等的情况下桥接 Redhat/Debian,那就很好。

我很想更多地了解 LibreOffice 的“可怕的妥协”。他们无法在安装脚本中编写一个小型的抽象层吗?

让我们庆祝 Linux 生态系统的丰富性,而不是哀叹它。

Linux 发行版不断变化的性质为应用程序开发人员增加了另一个复杂性维度。发行版的每次发布都可能带来与应用程序不兼容的更改。

根据您的经验,解决这个问题的方法是什么?

© . All rights reserved.