开始使用 Flatpak

[ad_1]

Fedora 是一个不回避新兴技术的发行版(毕竟,它的创始原则之一是 First)。 所以也就不足为奇了 Fedora 处于革命性的新软件包系统的前沿。 这不是杂志第一次提到 Flatpak,但由于 Flatpak 如此新,自上次以来发生了很多变化。

什么是 Flatpak?

Flatpak 可以粗略地描述为 RPM 的现代替代品,但它的影响远比简单地提供新的打包格式要重要得多。 在我们讨论 Flatpak 提供什么之前,首先考虑一下当前的软件交付流程 Fedora 今天。

  1. 上游作者在一个新版本上工作,最终生成一个包含源代码的存档(frobncate-0.4.2.tar.gz)
  2. 分发打包者收到通知,他们的上游团队已发布新版本
  3. 分发打包程序下载源存档,并为所有受支持的分发构建新版本,为每个分发生成二进制 RPM (frobncate-0.4.2-1.fc26.x86_64.rpm)
  4. 分发打包者将二进制 RPM 提交到适当的更新系统,通过工作流推送 RPM,以便……
  5. 最后用户可以下载新版本的 frobncate (dnf upgrade frobncate)

这个过程从开始到结束可能需要几天到几个月或更长时间。 Flatpak 为上游开发人员和最终用户提供工具,大大缩短了上游发布和二进制文件到达用户 dnf 更新之间的时间。 现在让我们重新审视 frobnicate,但在上游开发人员和最终用户中都使用了 Flatpak。

  1. 上游作者在一个新版本上工作,最终生成一个包含源代码的存档(frobncate-0.4.2.tar.gz)
  2. 上游作者使用 flatpak-builder 构建 Flatpak 存储库
  3. 上游作者将新存储库推送到其用户已知和/或在项目网站上宣传的 URL
  4. 最终用户在 flatpak 更新期间收到新版本的 frobnicate

Flatpak 直接连接上游作者和最终用户; 不涉及分销中介。 Flatpak 使用 OSTree 构建一个文件系统,其中包含运行所需程序所需的所有依赖库和文件。 这意味着单个 Flatpak 存储库可以在 全部 能够运行 flatpak 程序的 Linux 发行版。 此外,由于 OSTree 存储库可以分支,因此可以同时安装同一程序的不同版本(想象一下同时安装了稳定的发布版本和夜间开发版本!)。 最后,Flatpak 在沙盒环境中运行每个程序,在访问硬件设备或文件之前请求用户的许可。

设置存储库

任何人都可以托管 Flatpak 存储库,但它需要服务器和一些工具来维护。 结果,一些软件团队围绕几个不同的主要存储库合并。

侏儒

GNOME 开发团队拥有一个存储库,其中包含所有核心 GNOME 应用程序以及许多其他应用程序的夜间构建。 要添加 gnome-nightly 存储库,请打开终端并运行:

flatpak remote-add --if-not-exists gnome-nightly https://sdk.gnome.org/gnome-nightly.flatpakrepo
flatpak remote-add --if-not-exists gnome-apps-nightly https://sdk.gnome.org/gnome-apps-nightly.flatpakrepo

平面图

一组 Flatpak 开发人员已经启动了一个名为 平面图. Flathub 旨在提供一个集中的存储库,让用户可以使用 Flatpak 应用程序。 Flathub 涵盖的不仅仅是 GNOME 应用程序套件,而且会定期添加新的应用程序。 要添加 Flathub 存储库,请打开终端并运行:

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

应用

GNOME Software 已经支持 Flatpak 存储库,因此可以使用 GNOME Software 或 flatpak 命令安装应用程序。 从概览中启动软件,单击搜索按钮并搜索所需的应用程序。 如果它可以在传统的 Fedora 存储库作为 RPM,有两个结果。

  1. 标记为 Source: fedoraproject.org 的条目是 RPM。
  2. 标记为 Source: sdk.gnome.org 的条目是 Flatpak。

选择 Flatpak 条目并单击安装。

安装后,Polari 可以像任何其他应用程序一样从概览中启动; GNOME shell 已经支持 Flatpak 应用程序。

flatpak 命令还列出并安装应用程序和运行时。 要列出特定存储库中可用的所有应用程序,请运行 remote-ls 命令:

flatpak remote-ls flathub --app

使用 install 命令安装应用程序:

flatpak install flathub com.valvesoftware.Steam

安装后,运行命令将运行应用程序:

flatpak run com.valvesoftware.Steam

建立你自己的

在 Flathub 或其他地方找不到您最喜欢的作为 Flatpak 的应用程序? 建立你自己的实际上是相当简单的。 如果您习惯“手动”编译软件,那么创建 Flatpak 存储库似乎很熟悉。 Flatpak 存储库可以通过几种不同的方式构建,但最简单的方法是创建一个名为“manifest”的 JSON 格式文件。 例如,以 GNOME 字典为例:

{
  "app-id": "org.gnome.Dictionary",
  "runtime": "org.gnome.Platform",
  "runtime-version": "3.22",
  "sdk": "org.gnome.Sdk",
  "command": "gnome-dictionary",
  "finish-args": [
     "--socket=x11",
     "--share=network"
  ],
  "modules": [
    {
      "name": "gnome-dictionary",
      "sources": [
        {
          "type": "archive",
          "url": "https://download.gnome.org/sources/gnome-dictionary/3.20/gnome-dictionary-3.20.0.tar.xz",
          "sha256": "efb36377d46eff9291d3b8fec37baab2355f9dc8bc7edb791b6a625574716121"
        }
      ]
    }
  ]
}

Save 这个到一个文件中,然后运行 ​​flatpak-builder 来创建一个存储库。

$ flatpak-builder gnome-dictionary-app-dir org.gnome.Dictionary.json

资源

有越来越多的有用资源可用于构建和使用 Flatpak。

[ad_2]

Related Posts