Всегда было интересно, зачем Федоре свой репозиторий флатпаков, если есть Flathub, и чем они отличаются. И вот приехала статья на эту тему в Fedora Magazine.
Итак, коротенько для Ъ своими словами.
Я думал, что флатпаки от Федоры родом чисто из Silverblue (кто не в курсе, там прикладной софт категорически рекомендуется использовать из флатпаков), но об этом в статье ни слова. Оказывается, смысл в том, чтобы пользователи Федоры могли получать свежие RPM-ы от Fedora Project без необходимости обновлять свою операционную систему до последней версии.
Способ упаковки (точнее перепаковки) федоровских флатпаков сильно ограничен по сравнению с Flathub-ом; они используют строго один источник — уже существующие rpm-пакеты от Fedora Project, и в отличие от Flathub-а, распространяют только свободный софт. Flathub же упаковывает и перепаковывает из разных источников, например, Chrome из deb-пакета, UnityHub из Appimage, Spotify из Snap-а, Android Studio из официального тарболла и тд, в том числе собирают из исходников.
Конечно, софта в Fedora Flatpaks кот наплакал, по сравнению с Flathub-ом. На данный момент вот так
$ flatpak remote-ls --app fedora | wc -l
86
$ flatpak remote-ls --app flathub | wc -l
1520
Интересно, что форматы распространения флатпаков у Fluthub и Fedora Flatpaks совершенно разные. Fluthub использует формат OSTree (родной формат для Flatpak), а Fedora Flatpaks использует формат OCI.
OSTree — это инструмент похожий на Git, только для двоичных файлов. Когда вы скачиваете программу, OSTree ищет разницу между установленной версией и обновленной, затем скачивает и применяет только то, что имеет различия, а остальное оставляет нетронутым. Это называется дельта-обновления.
OCI (Open Container Initiative) — это формат, который работает подобно Docker, он позволяет Проекту Fedora расширять свой Docker registry, складывая туда флатпаки в виде докер-образов, и потом использовать этот самый Docker registry вместо того, чтобы создавать дополнительную инфраструктуру для репозитория флатпаков.
Среда выполнения (runtimes) соответственно тоже отличается для программ из Fluthub и Fedora Flatpaks. Вообще флатпаковские рантаймы — это ключевые зависимости, необходимые для работы программ, они нужны для так называемой дедупликации, то есть один и те же программы могут использовать одинаковые рантаймы и таким образом нет необходимости дублировать необходимые зависимости, в общем как в классическом Linux. Одни рантаймы базируются на других, какие-то сами по себе.
В Flathub дела обстоят так, что для GTK-программ используется GNOME runtime (org.gnome.Platform), а для KDE-программ — KDE runtime (org.kde.Platform), и они оба строятся поверх freedesktop.org runtime (org.freedesktop.Platform), который используют независимые от гнома и кед программы. И все это хозяйство поддерживается соответствующими организациями. В результате, если вы, например, совсем не используете программ на GTK или KDE, будут установлены только необходимые рантаймы.
В Fedora Flatpaks все по-другому. Они используют одну среду выполнения для всего, независимо от размеров программы. Если вы установите любую одну программу из Fedora Flatpaks, то она скачает и установит весь федоровский рантайм (org.fedoraproject.Platform).
Вот такие дела.
За пределами Fedora Linux тоже можно поюзать федоровские флатпаки, небо не упадет на землю
flatpak remote-add --if-not-exists fedora oci+https://registry.fedoraproject.org