Compilando seu primeiro Flatpak

Este tutorial fornece uma rápida introdução à compilação de Flatpaks. Nele, você aprenderá como criar um aplicativo Flatpak básico, que pode ser instalado e executado.

Para concluir este tutorial, você deve ter seguido o guia de configuração em flatpak.org. Você também precisa ter instalado o flatpak-builder, que geralmente está disponível no mesmo repositório que o pacote flatpak (por exemplo, use apt ou dnf). Você também pode instalá-lo como um flatpak com flatpak install flathub org.flatpak.Builder.

1. Instale um runtime e o SDK correspondente

O Flatpak exige que cada aplicativo especifique um runtime que ele usa para suas dependências básicas. Cada runtime possui um SDK (Kit de desenvolvimento de software) correspondente, que contém tudo o que está no runtime, além de cabeçalhos e ferramentas de desenvolvimento. Esse SDK é necessário para compilar aplicativos para o runtime.

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

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

2. Crie o aplicativo

O aplicativo que será criado para este tutorial é um script simples. Para criá-lo, copie o seguinte:

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

Agora cole isso em um arquivo vazio e salve-o como hello.sh.

3. Adicione um manifesto

Cada Flatpak é compilado usando um arquivo de manifesto que fornece informações básicas sobre o aplicativo e instruções sobre como ele deve ser compilado. Para adicionar um manifesto ao aplicativo “hello world”, adicione o seguinte a um arquivo vazio:

id: org.flatpak.Hello
runtime: org.freedesktop.Platform
runtime-version: '23.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

Agora salve o arquivo junto com hello.sh e chame-o de org.flatpak.Hello.yml.

Em um aplicativo mais complexo, o manifesto listaria vários módulos. O último seria tipicamente o próprio aplicativo, e os anteriores seriam dependências incluídas no aplicativo porque não fazem parte do runtime.

4. Compile o aplicativo

Agora que o aplicativo tem um manifesto, o flatpak-builder pode ser usado para compilá-lo. Isso é feito especificando o arquivo de manifesto e um diretório de destino:

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

Este comando criará cada módulo listado no manifesto e o instalará no subdiretório /app, dentro do diretório build-dir.

5. Teste a compilação

Para verificar se a compilação foi bem-sucedida, execute o seguinte:

$ flatpak-builder --user --install --force-clean build-dir org.flatpak.Hello.yml
$ flatpak run org.flatpak.Hello

Nesta segunda vez, passamos --force-clean, o que significa que o diretório build-dir criado anteriormente foi excluído antes do início da nova compilação.

Parabéns! Você fez um aplicativo!

6. Coloque o aplicativo em um repositório

Se você quiser compartilhar o aplicativo, você pode colocá-lo em um repositório. Isso é feito passando o argumento --repo para flatpak-builder:

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

Isso faz a compilação novamente e, no final, exporta o resultado para um diretório local chamado repo. Observe que o flatpak-builder mantém um cache de compilações anteriores no subdiretório .flatpak-builder, portanto, fazer uma segunda compilação como essa é muito rápido.

In order for your application to show up in application stores while testing with a local repository, you might have to run flatpak build-update-repo repo.

For more information how to publish to application stores see MetaInfo files.

7. Instale o aplicativo

Agora estamos prontos para adicionar o repositório que acabou de ser criado e instalar o aplicativo. Isso é feito com dois comandos:

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

O primeiro comando adiciona o repositório que foi criado na etapa anterior. O segundo comando instala o aplicativo a partir do repositório.

Os dois comandos usam o argumento --user, o que significa que o repositório e o aplicativo são adicionados por usuário e não em todo o sistema. Isso é útil para testes.

Observe que o repositório foi adicionado com --no-gpg-confirm, pois uma chave GPG não foi especificada quando o aplicativo foi construído. Isso é bom para testes, mas para repositórios oficiais, você deve assiná-los com uma chave GPG privada.

8. Execute o aplicativo

Tudo o que resta é experimentar o aplicativo. Isso pode ser feito com o seguinte comando:

$ flatpak run org.flatpak.Hello

Isso executa o aplicativo, para que ele imprima ‘Hello world, from a sandbox’.