Обновление от ноября 2020 г. :В Flatpak 1.7.1+ появилась новая опция командной строки. --sideload-repo
и разные пути для автономных репозиториев. Также повторно -сформулированный ответ чтобы попытаться уменьшить размер в целом.
Обновление за июнь 2020 г. :Я недостаточно точно указал местонахождение автономного репо. Во избежание сомнений полный путь к файлу сводки в оффлайн репо должно быть:/.ostree/repos.d/myoffline_repo/summary
. Уточненный инструкции ниже. Также обнаружил, что ссылки на автономные репозитории должны быть на та же файловая система.
Обновление от мая 2020 г. :обратите внимание на две проблемы, которые делают использование flatpak автономным. болезненный.
Обратите внимание на две проблемы, затрудняющие работу с автономными репозиториями flatpak:
Существует ошибка, вызывающая проблемы при установке плоских пакетов, использующих расширения из автономного репозитория:Flatpak сбивается, когда одна и та же ссылка расширение существует в двух репозитории При работе в автономном режиме вы создаете второе репо, чтобы отразить онлайн-репо, поэтому эта ошибка не может избегать. Это означает, что необходимые расширения не установлены в автономном режиме. машина. Лучший способ проверить, так ли это, — сравнить то, что установлен в исправной онлайн-системе по сравнению с автономной flatpak list
. Значительные различия могут указывать на необходимость дополнительных расширений на автономная система. Flatpak перечислит, что он собирается установить, когда вы устанавливаете что-то, чтобы вы могли сравнить это тоже. В автономной системе это не удастся список расширений.
Некоторые плоские пакеты пытаются загрузить файлы (дополнительные -данные )во время установки что приведет к сбою, если хост всегда находится в автономном режиме.:Не удается загрузить libopenh264. при установке в автономном режиме из flatpak создать -usb Одним из примеров этого является расширение openh264, которое во время установки загружает с сайта cisco.com.Вы можете обойти это, поместив необходимые загрузки в правильное место для flatpak, чтобы найти их без скачивания :' ~/.local/share/flatpak/extra -data/$SHA256/$FILENAME'. Однако точное имя файла зависит от конфигурации flatpak. Один из способов узнать это установить проблемный флаптак со strace и ищите ENOENT против дополнительных данных -пути. shas и имена файлов будут меняться между выпусками/обновлениями, поэтому вы придется обновлять его -на постоянной основе.
Сообщение в блоге "Об установке Flatpak" (blogs.gnome.org)mclasen в официальном блоге GNOME говорит, что это именно то, что flatpak create-usb
для -, он создает зеркало удаленного репо, содержащего приложение и также будет связывать все зависимости. Вы даже можете повторить шаг create-usb
несколько раз, чтобы отправить больше приложений в новый репозиторий перед переносом в оффлайн хосты. Вам также не нужно использовать USB-накопитель, вы можете перенести репо, как вам нравится, на целевую машину.
Начните с компьютера, на котором вы будете создавать автономный репозиторий :на удаленном компьютере. для зеркалирования потребуется идентификатор коллекции и последующее обновление flatpak. Если ты пытаясь упаковать приложение из flathub, автор приводит пример:
# Configure the remote
flatpak remote-modify --collection-id=org.flathub.Stable flathub
# Force an update
flatpak update
# Package up GIMP (for example)
flatpak create-usb./ org.gimp.GIMP
Автор объясняет, зачем нужны эти шаги:
If you don’t add the collection ID to your remote configuration, you will be greeted by an error saying “Remote ‘flathub’ does not have a collection ID set”. If you omit the flatpak update, the error will say “No such branch (org.flathub.Stable, ostree-metadata) in repository”.
Несмотря на разговоры о USB-накопителях, у вас останется репозиторий под .ostree
в текущем каталоге.
Теперь, когда у вас есть автономный репозиторий, вы хотите использовать его при установке плоских пакетов. Здесь есть различия в зависимости от вашей версии Flatpak.
Начиная с Flatpak 1.7.1 последняя документация по USB Диски относятся к автономным репозитории как неопубликованные репозитории. В документах говорится, что вы можете указать --sideload-repo
в командной строке,использовать их новые единицы systemd или
Alternatively, it’s possible to specify sideload sources using symbolic links placed in system-wide or user-specific directories and such sources will then be used for all Flatpak operations without the need for a --sideload-repo option.
Относится к команде flatpak. ссылка который гласит:
Such repositories are configured by creating symlinks to the sideload sources in the sideload-repos subdirectory of the installation directory (i.e. typically /var/lib/flatpak/sideload-repos). Additionally symlinks can be created in /run/flatpak/sideload-repos which is a better location for non-persistent sources (as it is cleared on reboot). These symlinks can point to either the directory given to flatpak create-usb which by default writes to the subpath.ostree/repo, or directly to an ostree repo.
Лучший вариант для постоянной настройки — сделать символические ссылки под /var/lib
тогда. Например, Flatpak должен иметь возможность достигать сводки ваш репозиторий offline_flatpak
здесь :/var/lib/flatpak/sideload-repos/offline_flatpak/summary
Упомянутый ранее модуль systemd просто сканирует только что вставленные диски и поместите символические ссылки в /run/flatpak/...
. Этого может быть достаточно, если вы действительно с помощью USB-накопителей.
Flatpak имеет механизм поиска репо, который будет рассматривать не только удаленные, но определенные локальные пути при поиске репозиториев или их зеркал. Ты только необходимо поместить зеркальный репозиторий в нужное место на целевой машине для flatpak, чтобы использовать его. Flatpak будет искать репозиторий на каждом монтировании по следующему адресу: директоры:
.ostree/repo
ostree/repo
.ostree/repos.d/
ostree/repos.d/
Таким образом, вы можете либо скопировать репозиторий на USB-накопитель и вставить его в целевую машину, либо скопируйте файлы, например. /.ostree/repo
для использования корневой файловой системы.
Для ясности: если вы решите использовать /.ostree/repos.d
, то итоговый файл для ваше автономное репо должно быть найдено по адресу /.ostree/repos.d/myoffline_repo/summary
.
Вы также можете использовать символическую ссылку в любом из этих каталогов и поместить настоящие файлы в другом месте, например.
mkdir -p /.ostree/repos.d
ln -s /home/user/Downloads/.ostree/repo /.ostree/repos.d/myoffline_repo
Однако обратите внимание, что ссылка должна вести на ту же файловую систему, иначе flatpak не будет ее использовать.
Также обратите внимание, что flatpak будет отдавать предпочтение репозиторию с самой последней датой от -до -, который он может найти, в зависимости от того, какой то есть.
Конечно, вы должны не забыть добавить исходный репозиторий на целевую машину. (flathub в этом экземпляре)-и установите идентификатор коллекции. Это потому что все в зеркальном репо хранится по ссылке на эту исходную коллекцию Я БЫ.На целевой машине:
flatpak remote-add flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak remote-modify --collection-id=org.flathub.Stable flathub
Если цель действительно не в сети, вы можете добавить удаленное устройство из файла.flatpakrepo, вместо использования URL:
flatpak remote-add --if-not-exists flathub flathub.flatpakrepo
# Download file from https://flathub.org/repo/flathub.flatpakrepo
Затем вы можете продолжить установку на целевом компьютере как обычно:
flatpak install flathub org.gimp.GIMP
При возникновении проблем:
--ostree-verbose
в командную строку flatpak, чтобы видеть отладку из ostree о том, в чем может быть проблема. ostree summary -v --repo=REPO
, чтобы увидеть что в нем на самом деле.