全部文章目录:
Flatpak打包(1)——Flatpak 介绍
Flatpak打包(2)——Flatpak应用元素
Flatpak打包(3)——应用Flatpak
Flatpak打包(4)——构建第一个Flatpak
Flatpak打包(5)——开始配置
Flatpak打包(6)——构建一个简单的应用
Flatpak打包(7)——Flatpak Builder
Flatpak打包(8)——应用Sandbox(沙盒)
Flatpak打包(9)——应用分发
Flatpak打包(10)——可用运行时(Runtime)
Flatpak打包(11)——命令参考
Flatpak打包(12)——Flatpak-builder命令参考
flatpak提供了多种分发应用程序的方式。主要方法是托管一个存储库。这是相对简单的(虽然有一些重要的细节需要注意),并允许分发应用程序更新。
也可以将flatpaks作为单个文件包分发,这在某些情况下可能很有用。
托管一个存储库
本指南的前几节介绍如何使用build-export
或flatpak-builder
生成存储库。生成的OSTree存储库可以驻留在Web服务器上供用户使用。
重要细节
OSTree存储库使用archive-z2,这意味着它们包含应用程序中每个文件的单个文件。这意味着pull操作将执行大量的HTTP请求。由于新请求很慢,因此在Web服务器上启用HTTP保持活动很重要。
OSTree支持一种叫做静态变量的东西。这些是repo中的单个文件,其中包含在两个修订之间(或从无到修订)所需的所有数据。创建这样的delta会在服务器上占用更多的空间,但会使下载速度更快。这可以通过build-update-repo --generate-static-deltas
选项来完成。
GPG签名
OSTree使用GPG来验证存储库的身份。这要求对存储库的每次提交都使用GPG签名以及存储库摘要文件的修改时间。
要做到这一点,需要将GPG密钥传递给build-update-repo
和build-export
命令,以及flatpak-builder
(如果用于修改或创建存储库)。(如果您还没有GPG密钥,则很容易生成GPG密钥)。例如:
$ flatpak build-export --gpg-sign=KEYID --gpg-homedir=PATH REPOSITORY DIRECTORY
这里--gpg-homedir
是可选的,并且允许指定要使用的密钥的主目录。
尽管通常不推荐,但可以禁用OSTree存储库的GPG验证。要做到这一点,添加远程时可以使用--no-gpg-verify
选项。GPG验证也可以在现有的远程平台上使用flatpak remote-modify
来禁用。
请注意,为了更新未启用gpg验证的远程设备,必须成为root用户
指定存储库
将用户指向包含应用程序的存储库的一种便捷方式是提供一个.flatpakrepo
文件,供他们下载和安装。要手动安装.flatpakrepo
文件,请使用以下命令:
$ flatpak remote-add --from foo.flatpakrepo
一个典型的.flatpakrepo
文件看起来像这样:
[Flatpak Repo]
Title=GEdit
Url=http://sdk.gnome.org/repo-apps/
GPGKey=mQENBFUUCGcBCAC/K9WeV4xCaKr3...
如果存储库仅包含一个应用程序,则可以更方便地使用.flatpakref文件,该文件包含足够的信息来添加存储库并同时安装应用程序。要手动安装.flatpakref
文件,请使用以下命令:
$ flatpak install --from foo.flatpakref
典型的.flatpakref
文件如下所示:
[Flatpak Ref]
Title=GEdit
Name=org.gnome.gedit
Branch=stable
Url=http://sdk.gnome.org/repo-apps/
IsRuntime=False
GPGKey=mQENBFUUCGcBCAC/K9WeV4xCaKr3...
RuntimeRepo=https://sdk.gnome.org/gnome.flatpakrepo
请注意,这些文件中的GPGKey密钥包含base64编码的GPG密钥,您可以使用以下命令获得该密钥:
$ base64 --wrap=0 < foo.gpg
单一文件包
托管存储库是分发应用程序的首选方式,但有时可以从网站提供的单个文件包或作为电子邮件附件发送的更便利。flatpak使用build-bundle
和build-import-bundle
命令来支持此操作,以将存储库中的应用程序转换为捆绑软件并返回:
$ flatpak build-bundle [OPTION...] LOCATION FILENAME NAME [BRANCH]
$ flatpak build-import-bundle [OPTION...] LOCATION FILENAME
例如,创建一个名为dictionary.flatpak的软件包,其中包含 ~/repositories /apps中的存储库中的GNOME dictionary应用程序,请运行:
$ flatpak build-bundle ~/repositories/apps dictionary.flatpak org.gnome.Dictionary
要将软件包导入另一台机器上的存储库,请运行:
$ flatpak build-import-bundle ~/my-apps dictionary.flatpak
注意与存储库相比,bundle有一些缺点。例如,使用托管存储库分发更新更方便,因为用户可以运行flatpak update
。