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

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

Більшість програм із графічним інтерфейсом може бути запаковано до 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 відрізняються від звичайних пакунків тим, що не існує окремої версії програми для F36, F37, rawhide тощо. Замість цього, існує єдина версія, яка є найновішою стабільною версією для усіх версій Fedora.

Пакунок flatpak призначено для певного середовища виконання. Стабільна версія має, за ідеальних умов, бути призначеною для середовища виконання найсвіжішої випущеної версії Fedora. Якщо випущена основна стабільна версія програми має залежності, які недоступні у випущеній версії Fedora і які не можна включити до комплекту модуля вашої програми (наприклад, потрібна найновіша версія компілятора C), прийнятним є використання наступної версії середовища виконання Fedora, але це має бути надзвичайний випадок. Вашу програму може бути, наприклад засновано на модулі flatpak-runtime:f38.

Версії для модуля і контейнера вашого стабільного випуску мають перебувати у стабільній гілці (stable) вашого сховища git, а потік модуля буде у потоці stable.

<програма>.yaml

Певна документація зі вмісту <програма>.yaml наведена у https://github.com/fedora-modularity/libmodulemd/blob/main/yaml_specs/modulemd_stream_v1.yaml (для файлів із version: 1) та https://github.com/fedora-modularity/libmodulemd/blob/main/yaml_specs/modulemd_stream_v2.yaml (для файлів з version: 2).

container.yaml

finish-args

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

Програма, яку не можна обмежити «пісочницею», програма потребує сервера X і користується мережею
flatpak:
    finish-args: >
        --share=network
        --socket=x11
        --filesystem=user
Програма, роботу якої обмежено «пісочницею»
flatpak:
    finish-args: >
        --socket=wayland
        --socket=fallback-x11
Програма, яку не можна обмежити «пісочницею», у програмі передбачено підтримку wayland і програма користується 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

Див. http://docs.flatpak.org/en/latest/sandbox-permissions-reference.html і сторінку підручника (man) flatpak-build(1).

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

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

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

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

Інші ключі

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

  • 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

Із документацією можна ознайомитися за допомогою сторінки підручника (man) flatpak-manifest(5).