Создайте свой первый Flatpak

Это руководство представляет собой быстрое введение в создание Flatpak. В нем вы узнаете, как создать базовое приложение Flatpak, которое можно установить и запустить.

Чтобы выполнить это руководство, вы должны были следовать руководству по установке на flatpak.org. Вам также необходимо установить flatpak-builder, который обычно доступен в том же репозитории, что и пакет flatpak (например, используйте apt или dnf). Вы также можете установить его как flatpak с помощью flatpak install flathub org.flatpak.Builder.

1. Установите среду выполнения и соответствующий SDK

Flatpak требует, чтобы каждое приложение указывало среду выполнения, которую оно использует для своих основных зависимостей. Каждая среда выполнения имеет соответствующий SDK (Software Development Kit), который содержит все, что есть в среде выполнения, а также заголовки и инструменты разработки. Этот пакет SDK необходим для создания приложений для среды выполнения.

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. Создайте приложение

Приложение, которое будет создано для этого урока, представляет собой простой скрипт. Чтобы создать его, скопируйте следующее:

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

Теперь вставьте это в пустой файл и сохраните как hello.sh.

3. Добавьте манифест

Каждый Flatpak создается с использованием файла манифеста, который предоставляет основную информацию о приложении и инструкции по его созданию. Чтобы добавить манифест в приложение hello world, добавьте в пустой файл следующее:

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

Теперь сохраните файл вместе с hello.sh и назовите его org.flatpak.Hello.yml.

В более сложном приложении в манифесте будет перечислено несколько модулей. Последним обычно является само приложение, а более ранние - зависимости, которые связаны с приложением, поскольку они не являются частью среды выполнения.

4. Соберите приложение

Теперь, когда у приложения есть манифест, для его сборки можно использовать flatpak-builder. Это делается путем указания файла манифеста и целевого каталога:

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

Эта команда соберет каждый модуль, указанный в манифесте, и установит его в подкаталог /app внутри каталога build-dir.

5. Протестируйте сборку

Чтобы убедиться, что сборка прошла успешно, запустите следующую команду:

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

Во второй раз мы передали --force-clean, что означает, что ранее созданный каталог build-dir был удален до запуска новой сборки.

Поздравляем, вы создали приложение!

6. Поместите приложение в репозиторий

Прежде чем вы сможете установить и запустить приложение, его сначала нужно поместить в репозиторий. Это делается путем передачи аргумента --repo параметру flatpak-builder:

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

Это снова выполнит сборку и в конце экспортирует результат в локальный каталог под названием repo. Обратите внимание, что flatpak-builder хранит кеш предыдущих сборок в подкаталоге .flatpak-builder, поэтому создание второй такой сборки выполняется очень быстро.

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. Установите приложение

Теперь мы готовы добавить только что созданный репозиторий и установить приложение. Это делается двумя командами:

$ 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 sandbox».