Flatpak
Flatpak - это система для создания, распространения и запуска изолированных настольных приложений в Linux. Приложения можно устанавливать независимо от хост-системы, в которой они используются, и они в некоторой степени изолированы от хост-системы (изолированы) во время выполнения. Это позволяет пользоваться установленными приложениями вне зависимости от обновления хост-системы.
Установка flatpak
# apt-get install flatpak
Для установки приложений при помощи flatpak из-под непривилегированного пользователя следует добавить пользователя в группу fuse:
# gpasswd -a USER fuse
USER - имя Вашего пользователя
Добавление репозиториев
$ flatpak remote-add name_repository url
name_repository - название удаленного репозитория
url - url адрес репозитория
После подключения нового репозитория следует выполнить обновление его данных:
$ flatpak update
Пример:
$ flatpak remote-add flathub https://flathub.org/repo/flathub.flatpakrepo
Удаление репозитория
$ flatpak remote-delete name_repository
name_repository - название удаляемого репозитория.
Список подключенных репозиториев
$ flatpak remotes
Поиск пакетов
Перед поиском следует выполнить обновление данных в репозитории:
$ flatpak update
Для поиска пакета:
$ flatpak search name_package
name_package - название Вашего пакета.
Получение списка пакетов в репозитории:
$ flatpak remote-ls name_repository
name_repository - название репозитория
Установка приложений
$ flatpak install name_repository name_package
Например:
$ flatpak install flathub firefox
Список установленных приложений
$ flatpak list
Запуск-удаление-обновление приложений
Запуска приложения:
$ flatpak run appname
где appname, имя приложения вида org.unknown_horizons.UnknownHorizons (см. flathub.org)
Обновление приложения:
$ flatpak update name_package
Удаление приложения:
$ flatpak uninstall name_package
С версии Flatpak 1.5.0 и выше появилась возможность запретить включение указанного пакета в обновление (вручную или автоматически).
Делается это следующим образом:
Блокировка обновления пакета:
$ flatpak mask org.openshot.OpenShot
Удалить пакет из списка "не обновляемых":
$ flatpak mask --remove org.openshot.OpenShot
Удаление неиспользуемых пакетов
$ flatpak uninstall --unused
Просмотр и определение разрешений
Flatpak использует стандартный набор правил песочницы, которые определяют ресурсы и пути файловой системы для приложений. Чтобы просмотреть разрешения конкретного приложения необходимо узнать его ID:
$ flatpak list | grep name_package
Затем посмотреть разрешения:
$ flatpak info --show-permissions application_id
Список доступных параметров для разрешений Вы можете найти в документации flatpak.
Изменить разрешения можно командой:
# flatpak override permission_option application_id
Например:
# flatpak override --device=dri org.mozilla.firefox
Сбросить разрешения до стандартных:
# flatpak override --reset application_id
Управление flatpak из GUI
Первый способ
Для установки, обновления и удаления ПО из графического интерфейса используется Центр программ Discover. В настройках Discover → Добавить репозиторий flathub.
Можно использовать web-интерфейс. Выбрать приложение скачать для него ярлык и запустить, Discover автоматически перехватит управление, добавит новый репозиторий и начнет установку.
Второй способ
Открываем Менеджер пакетов Synaptic, устанавливаем пакет flatpak-repo-flathub, также установиться и сам flatpak.
Открываем Центр управления системой, в меню Локальные группы находим группу fuse и добавляем нашего юзера в Члены группы. После этого перезапускаем текущую сессию.
После запуска Discover пройдет обновление репозитариев, в том числе и flathub, о чем нам покажет сообщение при запуске, затем можно пользоваться обычным поиском для установки нужных flatpak прямо в Discover.
На примере Spotify - запустить его можно командой flatpak run com.spotify.Client. Чтобы не запускать через терминал, а из меню, нужно добавить ярлык Spotify с помощью символьной ссылки в /.local/share/applications:
ln -s /var/lib/flatpak/app/com.spotify.Client/current/active/export/share/applications/com.spotify.Client.desktop /home/USER/.local/share/applications
На что обратить внимание в команде? - Расположение установленных программ в /var/lib/flatpak/app, на полный путь до ярлыка файл.desktop, а также имя своего пользователя указанного в примере - USER.
Если все сделано правильно в /.local/share/applications, мы увидим наш ярлык с именем com.spotify.Client.desktop, в меню появиться Spotify. Символьная ссылка работает так - ln -s /ЧТО /КУДА, для понимания команды выше.
Добавление в меню других программ аналогично.
Известные проблемы
Для установки приложений при помощи flatpak из-под непривилегированного пользователя следует добавить пользователя в группу fuse:
# gpasswd -a USER fuse
Не найдено удаленных репозиториев
Нет доступного репозитория их следует добавить.
$ flatpak remote-add flathub https://flathub.org/repo/flathub.flatpakrepo
Для второго случая:
$ flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
Неправильное имя файла
Неправильное название файла ярлыка. Например: io.brackets.Brackets.flatpakref
Убрать из имени .flatpakref
Не удается смонтировать fuse fs
Добавить пользователя в группу fuse
# gpasswd -a $USER fuse
Discover падает при добавлении новой программы
Could not unmount revokefs-fuse filesystem
Failed to execute child process fusermount (Permission denied)При этом Discover крашится. Нет прав на монтирование файловой системы.
# control fusermount wheelonly
Нет соединения с интернетом
Discover сообщает об ошибке соединения с интернетом. Следует установить пакет plasma5-discover-packagekit.
# plasma5-discover-packagekit
Перезапустить сеанс
Не добавляет ярлыки в меню приложений
Note that the directories
'/var/lib/flatpak/exports/share' '/home/zloyadmin/.local/share/flatpak/exports/share'
are not in the search path set by the XDG_DATA_DIRS environment variable, so applications installed by Flatpak may not appear on your desktop until the
session is restarted.Не добавляет ярлыки программ в меню приложений. Сделать файл flatpak.sh исполняемым.
# chmod +x /etc/profile.d/flatpak.sh
Перезапустить сеанс. Это действие в DE kde вызывает вылет при загрузке.
При запуске приложений выдаёт unprivileged user namespaces disabled
Должно помогать
# sysctl -w kernel.unprivileged_userns_clone=1
или установка пакета sysctl-conf-userns, но не помогает.