相对比 Fedora Flatpaks 和 Flathub 遥控器

在本系列的上一篇文章中,我们了解了怎样开始使用 Fedora Flatpaks 以及怎样使用它。 本文比较和对比 Fedora Flatpaks 遥控器和 Flathub 遥控器。 Flathub 是事实上的标准 Flatpak 遥控器,而 Fedora Flatpaks 是 Fedora 项目的 Flatpak 遥控器。 遥控器之间的不同之处包括但不限于它们的策略、分发方式和实施。

目标和动机

Fedora Flatpaks 和 Flathub 有着相同的目标,但动机不同。 目标是使应用程序在各自的领域中可访问,最大限度地提高便利性并最大限度地减少维护。

Fedora Flatpaks 的动机是推动直接来自 Fedora 项目并使其在整个过程中都可以访问 Fedora Linux 不考虑版本、版本等。因此,理论上,有可能从 Fedora 项目无需升级到最新版本 Fedora Linux。 当然,始终建议使所有内容保持最新。

Flathub 的动机是简单地使应用程序和工具尽可能易于访问,而不管使用的发行版怎样。 因此,所有工具都可以在 GitHub. Flathub 提供的应用程序提交问题与在 GitHub 上的任何项目中提交问题相同。

套餐

Fedora Flatpak 和 Flathub 以不同的方式创建 Flatpak 应用程序。 首先也是最重要的, Fedora Flatpak 从字面上将现有的 RPM 转换为与 Flatpak 兼容的文件,然后开发人员可以轻松地将它们捆绑为 Flatpak 并重新分发它们。 另一方面,Flathub 在开发人员怎样捆绑应用程序方面更加开放。

发布的包类型

Fedora Flatpaks 仅发布免费和开源软件,而 Flathub 发布免费和开源软件以及专有软件。 然而,Flathub 计划将专有应用程序与免费和开源应用程序分开,如 最近来自 GNOME 的博客文章.

来源

Flathub 对 Flatpak 应用程序(重新)使用的源是开放的,而 Fedora Flatpaks 严格重用 RPM 格式。

因此,Flathub 拥有大量重用其他包格式的应用程序。 为了 example, 这 Chrome Flatpak 重用 .deb 包,UnityHub Flatpak 重用 应用图像,Spotify Flatpak 重用 快照包,Android Studio Flatpak 使用 tar.gz 存档, 等等。

或者,Flathub 也直接从源代码编译。 有时来自源存档,来自运行 git clone 等。

申请数量

Fedora Flatpaks 的应用程序比 Flathub 少。 要列出远程可用的应用程序,请运行 flatpak remote-ls –app $REMOTE。 你可以更进一步,通过管道到 wc -l 来获取应用程序的数量:

[Terminal ~]$ flatpak remote-ls --app fedora | wc -l
86
[Terminal ~]$ flatpak remote-ls --app flathub | wc -l
1518

在这里,在撰写本文时,我们可以看到 Flathub 有 1518 个应用程序可用,而 Fedora Flatpaks 只有 86 个。

OSTree 和 OCI 格式

实现方式也完全不同。 两个都 Fedora Flatpak 和 Flathub 使用 Flatpak 来帮助您安装、删除和管理应用程序。 但是,就这些应用程序的发布方式而言,它们的工作方式根本不同。 Flathub 使用 OSTree 格式发布应用程序,而 Fedora Flatpaks 使用 OCI 格式。

OSTree 格式

OSTree(或 libostree)是一个跟踪系统二进制文件的工具。 开发人员将 OSTree 视为“二进制文件的 Git”,因为它在概念上类似于 git。 OSTree 格式是 Flatpak 的默认格式,Flathub 使用它来发布包和更新。

在下载应用程序时,OSTree 会检查已安装应用程序(如果已安装)与更新应用程序之间的差异,并智能下载并更改差异,同时保持其他所有内容不变,从而减少带宽。 我们将此过程称为增量更新。

OCI 格式

开放容器倡议 (OCI) 是由多个组织发起的一项旨在标准化容器某些元素的倡议。 Fedora Flatpaks 使用 OCI 格式发布应用程序。

这种格式类似于 Docker 的工作方式,这对于已经熟悉 Docker 的开发人员来说非常容易理解。 此外,OCI 格式允许 Fedora 项目延长 Fedora 登记处, 这 Fedora Project 的 Docker 注册表,通过将 Flatpak 应用程序创建为 Docker 映像并将它们发布到 Docker 注册表。

这避免了必须使用额外的工具来维护额外的基础设施来维护 Flatpak 远程的负担和复杂性。 相反, Fedora 项目只是重用 Fedora 注册表,使维护更容易和易于管理。

运行时

Flatpak 运行时是核心依赖项,应用程序在不复制数据的情况下重用这些依赖项,也称为“重复数据删除”。 运行时可以基于其他运行时,或独立构建。

Flathub 分散了这些运行时,这意味着运行时仅适用于特定类型的应用程序。 为了 example GTK 应用程序使用 GNOME 运行时 (org.gnome.Platform),Qt 应用程序使用 KDE 运行时 (org.kde.Platform),几乎所有其他东西都使用 freedesktop.org 运行时 (org.freedesktop.Platform)。 各个组织维护这些运行时,并将它们发布在 Flathub 上。 GNOME 和 KDE 运行时都建立在 freedesktop.org 运行时之上。

Fedora 另一方面,Flatpaks 对所有事情都使用一个运行时,而不管应用程序的大小。 这意味着,从安装一个应用程序 Fedora Flatpaks 将下载并安装整个 Fedora 运行时(org.fedoraproject.Platform)。

结论

总之,我们可以看到两者之间存在一些哲学和技术差异 Fedora Flatpaks 和 Flathub。

Fedora Flatpaks 专注于通过为普通用户提供更多而不使用更多资源来充分利用现有基础架构。 相比之下,Flathub 致力于让开发人员和用户尽可能轻松地分发/发布应用程序并使用它们。

这两款遥控器都令人印象深刻,它们在很短的时间内改进的速度之快。 我们希望这两个遥控器越来越好,成为大多数桌面 Linux 发行版的标准。