Секреты и хитрости

Эта страница объясняет несколько полезных функций Flatpak CLI.

Тестирование приложения с другой средой выполнения

Вы можете (для тестирования) запустить приложение с другой средой выполнения, чем обычно. Например, чтобы запустить стабильный gedit с последней нестабильной средой выполнения gnome, вы можете сделать:

$ flatpak run --runtime-version=master org.gnome.gedit

Вы также можете использовать совершенно другую среду выполнения (но с тем же номером версии):

$ flatpak run --runtime=org.gnome.Sdk org.gnome.gedit

Если вы просто хотите использовать SDK вместо платформы, подобной указанной выше, лучше использовать -d.

Предупреждение

Работа со средой выполнения с совершенно другим ABI является неопределенным и неподдерживаемым поведением.

Откат

Можно понизить версию установленного приложения (или среды выполнения) до более старой сборки.

Сначала вы ищите интересующий вас коммит:

$ flatpak remote-info --log flathub org.gnome.Recipes

Затем вы развертываете коммит:

$ sudo flatpak update \
  --commit=ec07ad6c54e803d1428e5580426a41315e50a14376af033458e7a65bfb2b64f0 \
  org.gnome.Recipes

Примечание

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

Если у вас Flatpak 1.5.0 или новее, вы также можете запретить включение приложения в обновления (вручную или автоматически):

$ flatpak mask org.gnome.Recipes

Поперечная регрессия в сборках приложений

В случае, если новейшие сборки приложения вызывают регрессию, вы можете использовать команду flatpak-bisect, чтобы узнать, какая фиксация привела к регрессии. Он работает так же, как git bisect.

Если ваш дистрибутив не устанавливает утилиту flatpak-bisect, вы можете найти ее вместе с исходным кодом Flatpak по адресу: https://github.com/flatpak/flatpak/blob/main/scripts/flatpak-bisect

Сначала вы обновляете приложение и получаете его историю:

$ flatpak-bisect org.gnome.gedit start

Затем вы должны установить текущий коммит как первый ошибочный коммит:

$ flatpak-bisect org.gnome.gedit bad

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

$ flatpak-bisect org.gnome.gedit log

Чтобы начать деление пополам, проверьте первый известный удачный коммит, который вы найдете:

$ flatpak-bisect org.gnome.gedit checkout 5cd2b0648618c9038fbc6830733817309ade29541cdd8383830bbb76f6accf0d

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

Чтобы пометить фиксацию как хорошую или плохую, запустите:

$ flatpak-bisect org.gnome.gedit good

Или:

$ flatpak-bisect org.gnome.gedit bad

flatpak-bisect сообщит вам, когда будет обнаружена первая плохая фиксация.

Добавление выборочной установки

По умолчанию Flatpak устанавливает приложения в масштабе всей системы, а также может быть настроен для установки для каждого пользователя с параметром –user, принятым большинством команд. Третий вариант - настроить выборочную установку, которая может храниться на внешнем жестком диске.

Сначала убедитесь, что каталог конфигурации существует:

$ sudo mkdir -p /etc/flatpak/installations.d

Затем откройте файл в этом каталоге как root:

$ sudoedit /etc/flatpak/installations.d/extra.conf

И напишите что-нибудь вроде этого:

[Installation "extra"]
Path=/run/media/mwleeds/ext4_4tb/flatpak/
DisplayName=Extra Installation
StorageType=harddisk

Полную спецификацию формата см. в разделе flatpak-installation(5). Замените путь фактическим путем, который вы хотите использовать. Вы можете использовать df для просмотра смонтированных файловых систем и mkdir для создания каталога flatpak, чтобы существовал путь, указанный в Path=.

Затем вы можете добавить удалённый компьютер с помощью такой команды, как:

$ flatpak --installation=extra remote-add flathub https://flathub.org/repo/flathub.flatpakrepo

И установите его с помощью:

$ flatpak --installation=extra install flathub org.inkscape.Inkscape

Примечание

Если ваша пользовательская установка является единственной с удаленным компьютером, с которого вы выполняете установку, параметр --installation можно не указывать.

И запускать из него приложения с помощью:

$ flatpak --installation=extra run org.inkscape.Inkscape

Примечание

Если ваша пользовательская установка является единственной с приложением, которое вы используете, --installation можно не указывать.

Настройка лимитов ресурсов для приложений

Когда доступен systemd, Flatpak пытается поместить процессы приложения в область действия, такую как app-flatpak-com.brave.Browser-*.scope (в случае Brave), где * заменяется произвольным суффиксом. Это означает, что вы можете создать файл вида ~/.config/systemd/user/app-flatpak-com.brave.Browser-.scope.d/memory.conf с таким содержимым:

[Scope]
MemoryHigh=1G

Затем после systemctl --user daemon-reload эти параметры systemd.resource-control(5) будут применяться ко всем экземплярам этого приложения.