构建你的第一个flatpak应用

这个教程提供了一个构建flatpak的简单介绍。你可以从它学习到如何创建一个基础的可以被安装和运行的flatpak应用。

为了完成这个教程,你应该阅读 flatpak.org上的安装指南 。同时需要安装 flatpak-builder ,它通常可以在 flatpak 包所在的仓库找到。

1.安装runtime和与之相匹配的SDK

flatpak要求每个应用指明一个runtime,作为它的基本依赖。每个runtime有一个匹配的SDK(软件开发套件),包含了runtime里面的所有东西,加上头文件和开发工具。构建应用的时候需要这个SDK。

In this tutorial we will use the Freedesktop 18.08 runtime and SDK. To install these, run:

$ flatpak install flathub org.freedesktop.Platform//18.08 org.freedesktop.Sdk//18.08

2.创建应用

这个教程要创建的个应用是一个简单的脚本。为了创建它,复制下面的内容:

#!/bin/sh
echo "Hello world, from a sandbox"

现在粘贴它到一个空文件然后保存为 hello.sh

3.添加一个清单文件

每个flatpak都用一个清单文件来构建,它提供了这个应用的基本信息和如何构建它的指令。为hello world应用添加一个清单文件,添加如下内容到一个空文件:

{
    "app-id": "org.flatpak.Hello",
    "runtime": "org.freedesktop.Platform",
    "runtime-version": "18.08",
    "sdk": "org.freedesktop.Sdk",
    "command": "hello.sh",
    "modules": [
        {
            "name": "hello",
            "buildsystem": "simple",
            "build-commands": [
                "install -D hello.sh /app/bin/hello.sh"
            ],
            "sources": [
                {
                    "type": "file",
                    "path": "hello.sh"
                }
            ]
        }
    ]
}

现在保存这个文件到 hello.sh 旁边,命名为 org.flatpak.Hello.json

在一个更加复杂的应用中,这个清单文件会列出多个模块。通常最后一个是应用本身,前面的是要和应用绑定的依赖,因为他们不是runtime的一部分。

4.构建应用

现在这个应用有一个清单文件, flatpak-builder 可以用来构建它。通过指明一个清单文件和一个目标目录:

$ flatpak-builder build-dir org.flatpak.Hello.json

这个命令会构建每个列在清单文件里的模块,然后将它安装到 build-dir/app 子目录。

5.测试构建

为了确认构建成功,运行:

$ flatpak-builder --run build-dir org.flatpak.Hello.json hello.sh

恭喜,你已经创建了一个应用!

Keep in mind that using --run won’t result in a sandbox with the same permissions as the final app, as such it shouldn’t be relied upon beyond basic testing.

6.将应用放到仓库

在你运行和安装这个应用之前,它首先需要被放到一个仓库里。通过传递 --repo 参数给 flatpak-builder

$ flatpak-builder --repo=repo --force-clean build-dir org.flatpak.Hello.json

这将再次进行构建,最后将结果导出到名为 repo  `` 的本地目录。注意, ``flatpak-builder.flatpak-builder 子目录下保存了先前构建的缓存,所以像这样进行二次构建非常快。

第二次我们通过 --force-clean ,会在新的构建开始之前删除先前创建的 build-dir 目录。

7.安装应用

现在我们准备好添加创建的仓库并安装应用。通过两个命令来完成:

$ flatpak --user remote-add --no-gpg-verify tutorial-repo repo
$ flatpak --user install tutorial-repo org.flatpak.Hello

第一个命令添加先前步骤创建的的仓库。第二个命令从仓库安装应用。

两个命令都使用 --user 参数,表明仓库和应用是按照用户来添加而不是系统范围的。这在测试的时候很管用。

注意创建仓库添加了 --no-gpg-verify 参数,因为应用创建的时候没有指明GPG密钥。测试的时候这样做完全没有问题,但是官方的仓库必须使用一个私有的GPG秘钥签名。

8.运行应用

剩下的就是试用应用。通过执行如下命令:

$ flatpak run org.flatpak.Hello

这运行了应用,使它打印“Hello world, from a sandbox”。