Flatpak打包(7)——Flatpak Builder

全部文章目录:
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允许将这些依赖关系捆绑为应用程序本身的一部分。为此,必须在应用程序构建目录内部构建每个依赖项。flatpak-builder工具可以自动执行多步构建过程,从而可以使用单个命令构建所有应用程序模块。
flatpak-builder支持各种构建系统,包括 autotoolscmakecmake-ninjameson,一种简单的称为“simple”的构建系统,它允许提供一系列运行命令,以及所谓的Build API
所有json实体都在flatpak-builder的man页面中解释。

Manifests

flatpak-builder的输入是一个json文件,它描述了构建应用程序的参数以及要捆绑的每个模块。这个文件被称为manifest。模块源可以有多种类型,包括运行的.tar.zip存档,Git或Bzr存储库,补丁文件或shell命令。
GNOME Dictionary的Manifests很短,因为唯一的模块是应用程序本身:

{
  "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"
        }
      ]
    }
  ]
}

可以看出,这个manifest包含了有关应用程序的基本信息,然后指定了一个要下载和构建的.tar文件。更复杂的manifest包括一系列模块。

清理(Cleanup)

构建完成后,flatpak-builder会执行清理阶段。这可以用来除去头文件和开发文档等等。 manifest文件中的两个属性用于此目的。
首先,可以包含文件名模式列表:

"cleanup": [ "/include", "/bin/foo-*", "*.a" ]

第二个清理属性是在清理阶段运行的命令列表:

"cleanup-commands": [ "sed s/foo/bar/ /bin/app.sh" ]

可以基于每个模块设置清理属性,在这种情况下,只有由该特定模块创建的文件名才会匹配。

文件重命名

由flatpak导出的文件必须使用应用程序ID作为前缀。如果应用程序的源文件没有使用该约定命名,则flatpak-builder允许将它们重命名为构建过程的一部分。要重命名应用程序图标,桌面文件和 AppData文件,请使用rename-icon, rename-desktop-filerename-appdata-file属性。

Splitting things up

默认情况下,flatpak构建器会将翻译和调试信息拆分为单独的.locale.debug扩展名。这些’标准’扩展点将被添加到应用程序的元数据文件中。可以使用separate-localeno-debuginfo关闭它,但不应该有任何理由。
当flatpak构建器将构建版本导出到存储库时,它会自动包含.locale.debug扩展。如果手动进行导出,请不要忘记包含它们。

例子

要自己尝试使用flatpak-builder,创建一个名为org.gnome.Dictionary.json的文件,并将上面的Dictionary manifest json内容粘贴到该文件中。
然后运行以下命令:

$ flatpak-builder --repo=repo dictionary2 org.gnome.Dictionary.json

这会:

  • 创建一个名为dictionary2的新目录(相当于使用flatpak build-init
  • 下载并验证Dictionary源代码
  • 使用sdk而不是主机系统构建和安装源代码
  • 完成构建,通过设置权限(在这种情况下允许访问X和网络)
  • 创建一个名为repo的新存储库(如果它不存在)并将生成的构建导出到其中


1 如果这个出现一下错误:

$ flatpak-builder --repo=repo dictionary2 org.gnome.Dictionary.json
Downloading sources
Downloading https://download.gnome.org/sources/gnome-dictionary/3.20/gnome-dictionary-3.20.0.tar.xz
Failed to download sources: module gnome-dictionary: 已到超时限制

可以通过将文件下载到本地,然后更改org.gnome.Dictionary.json中的"url": "https://download.gnome.org/sources/gnome-dictionary/3.20/gnome-dictionary-3.20.0.tar.xz","path": "The path of the archive"即可。
2 如果出现Flatpak打包(6)——构建一个简单的应用中出现的bug。可以将文件解压之后重新进行压缩。

flatpak-builder还会做一些其他有用的事情,比如创建一个可单独安装的debug运行时(本例中称为org.gnome.Dictionary.Debug)和一个可单独安装的translation运行时(称为org.gnome.Dictionary.Locale)。
如果已完成构建简单应用程序的教程,则可以使用由flatpak-builder构建并导出的新版本来更新安装的字典应用程序:

$ flatpak --user update org.gnome.Dictionary

否则,您需要将repo添加到flatpak并安装该应用程序。使用如下命令:

$ flatpak --user remote-add --no-gpg-verify --if-not-exists tutorial-repo repo
$ flatpak --user install tutorial-repo org.gnome.Dictionary

要检查应用程序是否已成功更新,可以将安装的应用程序的sha256提交与flatpak-builder命令打印的提交ID进行比较:

$ flatpak info org.gnome.Dictionary
$ flatpak info org.gnome.Dictionary.Locale

最后,您可以运行新版本的Dictionary应用程序:

$ flatpak run org.gnome.Dictionary

manifests示例

除了为一系列其他gnome应用程序提供manifests之外,还可以使用从git构建的gnome字典的完整manifests

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值