Упаковка — углублённо
Подходит ли ваше приложение?
Большинство графических приложений можно преобразовать в Flatpak без изменений, хотя создание изолированного Flatpak, который предотвращает выполнение приложением произвольных действий с учётной записью пользователя, скорее всего, потребует изменений в коде.
Некоторые вещи, из-за которых приложение может плохо работать в качестве Flatpak:
-
Если оно устанавливает системные службы или изменяет системные конфигурационные файлы
-
Если ему требуется доступ к двоичным файлам или другим файлам в
/usr, которые нельзя включить в приложение
Выбор идентификатора приложения
Чтобы выбрать подходящий идентификатор приложения:
-
Если у приложения уже есть файл .desktop такого вида, это и есть идентификатор приложения.
-
Если приложение экспортирует какие-либо D-Bus-службы (ищите файлы в
/usr/share/dbus-1/services/— хотя приложение может экспортировать D-Bus-службы без установки файла службы), то префикс имени D-Bus должен совпадать с идентификатором приложения. -
Если приложение уже упаковано на Flathub, используйте тот же идентификатор приложения.
-
В противном случае вам нужно придумать идентификатор приложения. Это должно быть ваше наилучшее предположение о том, что использовал бы вышестоящий проект — если у них есть собственное доменное имя, оно должно быть основой, в противном случае основывайтесь на хостинге — например,
com.github.<пользователь/организация>.<Приложение>. Обратите внимание, что изначальная идея идентификатора приложения заключается в том, что это обратное имя, которое находится под вашим контролем, поэтому, если возможно, согласуйте это с вышестоящим проектом, спросите их, устраивает ли ваш выбор, и попросите переименовать их файл .desktop и значок соответствующим образом.
Приложения могут экспортировать ресурсы только под своим идентификатором приложения, поэтому файл .desktop и значок приложения должны иметь соответствующее имя. Лучше всего реализовать это в вышестоящем проекте. Второе по предпочтительности место — в пакете приложения Fedora. Но если это невозможно, вы можете сделать это в своём container.yaml. См. раздел [Renames] ниже.
Управление версиями
Flatpak-пакеты в Fedora отличаются от обычных пакетов тем, что для них нет отдельной версии приложения для F43, F44, rawhide и т.д. Вместо этого существует единая версия, которая является последней стабильной версией для всех версий Fedora.
Flatpak нацелен на определённую среду выполнения. Ваша стабильная версия в идеале должна быть нацелена на среду выполнения, соответствующую последней выпущенной версии Fedora. Если приложение ещё не может быть собрано для последней выпущенной версии Fedora, допустимо временно использовать предыдущую версию среды выполнения Fedora, но это должен быть необычный случай.
|
В общем случае предыдущие версии среды выполнения поддерживаются только до тех пор, пока они ещё требуются Flatpak-пакетам Fedora. Как только все Flatpak-пакеты Fedora будут перенесены на последнюю версию среды выполнения, предыдущие версии больше не поддерживаются и не обновляются. |
Версия контейнера для вашего стабильного релиза должна находиться в стабильной ветке вашего git-репозитория.
container.yaml
finish-args
Раздел flatpak/finish-args в вашем container.yaml определяет, какие разрешения будет иметь приложение.
flatpak:
finish-args: |-
--share=network
--socket=x11
--filesystem=user
flatpak:
finish-args: |-
--socket=wayland
--socket=fallback-x11
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
См. документацию Права изоляции и страницу руководства flatpak-build(1).
Переименования
Многие существующие приложения в Fedora не имеют приложения в стандартной форме. Вы можете добавить ключи в свой container.yaml, чтобы переименовать экспортируемые ресурсы в соответствии с идентификатором приложения.
flatpak:
rename-appdata-file: eog.appdata.xml
rename-desktop-file: eog.desktop
rename-icon: eog
Однако предпочтительный способ — исправить идентификатор приложения в RPM-пакете или, что ещё лучше, в вышестоящем проекте. Это лучше, потому что система сможет понять связь между двумя приложениями и не будет показывать дублирующиеся записи в GNOME Software или списке установленных приложений.
Другие ключи
Полный список поддерживаемых ключей из файла манифеста сборщика 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
См. страницу руководства flatpak-manifest(5) для документации.
Want to help? Learn how to contribute to Fedora Docs ›