Докладно про пакування

Чи є ваша програма відповідною?

Більшість програм із графічним інтерфейсом може бути запаковано до Flatpak без внесення змін, хоча створення «пісочного» Flatpak, який не дає програмі робити довільні речі із обліковим записом користувача, ймовірно потребуватиме певних змін у коді програми.

Ось умови, які можуть завадити якісній роботі програми у форматі Flatpak:

  • Якщо програма встановлює загальносистемні служби або вносить зміни до файлів налаштувань системи

  • Якщо для роботи програми потрібен доступ до виконуваних файлів або інших файлів у /usr, які не можна вкласти до пакунка з програмою

Вибір ідентифікатора програми

Щоб вибрати належний ідентифікатор програми:

  • Якщо у програми вже є файл desktop у цьому форматі, ідентифікатор програми буде визначено за ним.

  • Якщо програма експортує будь-які служби D-Bus (пошукайте файли у /usr/share/dbus-1/services/ — хоча програма може експортувати служби D-Bus без встановлення файла служби), префікс назви D-Bus має точно збігатися з ідентифікатором програми.

  • Якщо програму вже запаковано на Flathub, будь ласка, скористайтеся тим самим ідентифікатором програми.

  • Якщо це не так, вам слід створити ідентифікатор програми. Це має бути щось дуже близьке до того, що могли б вибрати автори програми — якщо б у них була власна назва домену — це буде основа. Якщо цього домену немає, можна вибрати його за місцем зберігання коду. Приклад: com.github.<користувач/організація>.<Програма>. Зауважте, що ідея ідентифікатора програми полягає у тому, що це назва, за якою можна встановити якесь сховище даних, яке перебуває під вашим контролем. Тому, якщо можна, будь ласка, координуйте ваші зусилля із розробниками, запитайте у них, чи правильно ви вибрали ідентифікатор, і попросіть їх перейменувати файл desktop та піктограму програми відповідним чином.

Програми можуть експортувати ресурси лише з власним ідентифікатором програми, отже файл desktop і піктограму програми слід назвати відповідним чином. Найкраще зробити це разом із основними розробниками програми. Якщо не вдається це зробити в основному сховищі коду, зробіть це у пакунку програми для Fedora. Якщо ж і це неможливо, ви можете з робити це у власному container.yaml. Див. розділ Перейменування нижче.

Версії

Пакунки Flatpak у Fedora відрізняються від звичайних пакунків тим, що не існує окремої версії програми для F41, F42, rawhide тощо. Замість цього, існує єдина версія, яка є найновішою стабільною версією для усіх версій Fedora.

A flatpak targets a particular runtime. Your stable version should ideally target the runtime corresponding to the latest released version of Fedora. If the application cannot yet be built for the latest released version of Fedora, then it’s acceptable to temporarily use the previous version of the Fedora runtime, but this should be an unusual case.

In general, previous versions of the runtime are supported only as long as Fedora flatpaks still require them. Once all Fedora flatpak have been migrated to the latest runtime version, the previous versions are no longer supported or updated.

The container version for your stable release should be in the stable branch of your git repository.

container.yaml

finish-args

flatpak/finish-args: розділ вашого container.yaml, який визначає права доступу для програми.

Програма, яку не можна обмежити «пісочницею», програма потребує сервера X і користується мережею
flatpak:
    finish-args: |-
        --share=network
        --socket=x11
        --filesystem=user
yaml
Програма, роботу якої обмежено «пісочницею»
flatpak:
    finish-args: |-
        --socket=wayland
        --socket=fallback-x11
yaml
Non-sandboxed application, application has wayland support, and uses the host DConf
flatpak:
    finish-args: |-
         --filesystem=host
         --share=ipc
         --socket=fallback-x11
         --socket=wayland
         --socket=session-bus
         --filesystem=~/.config/dconf:ro
         --filesystem=xdg-run/dconf
         --talk-name=ca.desrt.dconf
         --env=DCONF_USER_CONFIG_DIR=.config/dconf
yaml

See Sandbox Permissions documentation and the flatpak-build(1) manual page.

Перейменування

Багато наявних програм у Fedora не стандартизовано. Ви можете додавати ключі до вашого файла container.yaml для перейменовування ресурсів відповідно до ідентифікатора програми.

flatpak:
    rename-appdata-file: eog.appdata.xml
    rename-desktop-file: eog.desktop
    rename-icon: eog
yaml

Втім, перевагу слід надавати виправленню ідентифікатора програми при пакуванні RPM або, навіть краще, у основній гілці розробки. Так буде краще, оскільки система зможе встановлювати зв’язок між двома програмами і не дублюватиме запису у «Програмному забезпеченні» GNOME і списку встановлених програм.

Інші ключі

Нижче наведено повний список підтримуваних ключів з файла маніфесту збиральника Flatpak. Ви можете додати ці ключі до розділу flatpak: файла container.yaml:

  • add-extensions

  • appdata-license

  • appstream-compose

  • copy-icon

  • desktop-file-name-prefix

  • desktop-file-name-suffix

  • end-of-life

  • end-of-life-rebase

  • rename-appdata-file

  • rename-desktop-file

  • rename-icon

  • rename-mime-file

  • rename-mime-icons

See the flatpak-manifest(5) manual page for documentation.