Skip to content

Рекомендации по сборке ​

Данная статья содержит общие рекомендации для составления Спек-файла для достижения корректной пересборки пакета в формате Flatpak (%_prefix=/app)

Почему следует учитывать данные рекомендации? ​

Если не следовать ниже описанным рекомендациям, пересборка пакета с %_prefix=app не будет проходить корректно, и пакет не будет пересобран для Flatpak

Для упаковки во Flatpak-совместимом формате следует учитывать, что существует платформа, в рамках которой пакеты будут пересобираться. Внутри платформы файлы пакетов расположены по тем же путям, что и в классической системе (%_prefix=/usr), но с %_prefix=/app

В спеке/патчах необходимо учитывать, что разные бинарники/библиотеки/файлы/директории могут иметь разные пути:

  • Если указывается путь, относящийся к пакету, который входит в состав платформы/SDK, то его путь будет указан через /usr (или использовать использовать макрос %_usr)
  • В ином случае, рекомендуется не хардкодить путь через /usr

Проверить, входит ли пакет в состав платформы или SDK можно по YAML-конфигу соответствующего компонента:

Метаданные приложения и медиа-файлы ​

  • Файлы .desktop, .metainfo.xml и значки приложения должны иметь имя файла, равное FLATPAK_ID, иначе они не попадут во Flatpak
  • Значки приложений должны находиться только в %_iconsdir/hicolor (для Flatpak — это /app/share/icons/hicolor)

Использование Flatpak-специфичных проверок ​

На этапе сборки ​

В спек-файле проверить, собирается ли приложение под Flatpak-среду, можно через макрос %_prefix. Если он равен /app, то сборка происходит для Flatpak, иначе — для обычного системного пакета

%if "%_prefix" == "/app"
# Do Flatpak stuff
%else
# Do system stuff
%endif

На этапе работы приложения (во Flatpak-среде) ​

Во Flatpak-среде автоматически объявляются переменные среды FLATPAK_ID и container

Также, можно проверить /etc/os-release

Это может быть полезно для выполнения проверок в Python- или Bash-скриптах

if [ -n "$container" ]; then
    echo "Do Flatpak stuff"
else
    echo "Do systemd stuff"
fi