Установка на машине пользователя#

Приложение вендора и среда выполнения, на которой оно собрано, лежат в разных репозиториях. Подключить нужно оба. Без репозитория вендора Flatpak не найдёт приложение, без репозиториев Astra - среду, и установка прервётся.

Порядок один и тот же на любой машине: подключить репозитории Astra, подключить репозиторий вендора, установить приложение. Среда подтянется сама, как зависимость, указывать её отдельно не нужно.

Шаг 1: репозитории Astra#

Сборки Flatpak для Astra публикуются в двух репозиториях.

main - среды выполнения (org.astra.mainPlatform, org.astra.Qt, org.astra.Qt6, org.astra.Gtk), драйверы GL и готовые приложения:

sudo flatpak remote-add --if-not-exists --from astra-main \
    https://dl.astralinux.ru/astra-flatpak/main.flatpakrepo

extended - SDK (org.astra.mainSdk, org.astra.qtSdk, org.astra.Qt6Sdk, org.astra.gtkSdk), базовые приложения и расширения сборки:

sudo flatpak remote-add --if-not-exists --from astra-extended \
    https://dl.astralinux.ru/astra-flatpak/extended.flatpakrepo

Пользователю, который только запускает приложения, достаточно main. Репозиторий extended нужен, если приложение зависит от расширения, опубликованного там, или если на машине планируется сборка.

Ключ --from говорит, что по адресу лежит файл подключения, а не сам репозиторий: в файле собраны адрес, название и публичный ключ, поэтому импортировать ключ отдельно не требуется. Ключ --if-not-exists позволяет выполнять команду повторно, не получая ошибки о том, что репозиторий уже подключён.

Шаг 2: репозиторий вендора#

Подключается точно так же, файлом подключения, который выложил вендор:

sudo flatpak remote-add --if-not-exists --from example \
    http://flatpak.example.ru/example.flatpakrepo

Если вендор файла подключения не выложил, указывается адрес самого каталога репозитория, а публичный ключ передаётся отдельно:

sudo flatpak remote-add --if-not-exists example \
    http://flatpak.example.ru/repo/ --gpg-import=repo-key.gpg

Проверить, что оба шага прошли:

flatpak remotes
astra-main       system
astra-extended   system
example          system

Шаг 3: установка#

Посмотреть, что есть у вендора:

flatpak remote-ls example

Установить приложение:

sudo flatpak install example ru.example.Hello

Flatpak покажет, что именно будет установлено: само приложение из репозитория вендора и среда выполнения из astra-main. Обе строки нужно подтвердить. Чтобы не подтверждать вручную, добавляется ключ -y.

Запуск:

flatpak run ru.example.Hello

Приложение появляется в меню как обычная программа: ярлык и иконку Flatpak раскладывает при установке сам.

Системная и пользовательская установка#

По умолчанию установка системная: приложение доступно всем на машине и требует прав администратора. Если прав нет или приложение нужно только текущему пользователю, всё то же делается с ключом --user и без sudo:

flatpak --user remote-add --if-not-exists --from example \
    http://flatpak.example.ru/example.flatpakrepo
flatpak --user install example ru.example.Hello

Два вида установки живут независимо: репозиторий, подключённый системно, для пользовательской установки не виден, и наоборот.

Обновление#

Обновление берёт новые версии из всех подключённых репозиториев:

sudo flatpak update

Обновить только одно приложение:

sudo flatpak update ru.example.Hello

Если вендор включил генерацию двоичных дельт, при обновлении скачивается только разница между версиями, а не приложение целиком.

Удаление#

sudo flatpak uninstall ru.example.Hello

Среда выполнения остаётся: её могут использовать другие приложения. Убрать всё, что больше никому не нужно:

sudo flatpak uninstall --unused

Когда установка не проходит#

Сообщение о том, что среда выполнения не найдена, означает, что репозитории Astra не подключены или подключён не тот из них. Проверить, доступна ли нужная среда:

flatpak remote-ls astra-main | grep org.astra

Сообщение о неверной подписи означает, что публичный ключ репозитория на машине не совпадает с тем, которым подписан репозиторий. Так бывает после смены ключа у вендора. Лечится повторным подключением из актуального файла:

sudo flatpak remote-delete example
sudo flatpak remote-add --from example http://flatpak.example.ru/example.flatpakrepo

Приложения нет в выводе flatpak remote-ls, хотя репозиторий доступен: оно опубликовано под другой архитектурой или в другой ветке. Посмотреть всё, что есть в репозитории:

flatpak remote-ls --all example

Приложение установилось, но не запускается. Посмотреть, с какими разрешениями оно стоит, и запустить его с выводом в терминал:

flatpak info --show-permissions ru.example.Hello
flatpak run ru.example.Hello

Ошибки при запуске идут в терминал, поэтому запуск из терминала показывает причину, которой не видно при запуске из меню.