Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Сборка приложения для запуска в изолированном окружении xdg-app - часть 5

Оригинал: Building an xdg-app - part 5
Автор: Alexander Larsson
Дата публикации: 26 февраля 2016 г.
Перевод: А. Панин
Дата перевода: 20 апреля 2016 г.

Сборка приложения для запуска в изолированном окружении xdg-app - часть 5

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

В первую очередь следует упомянуть о технологии OSTree. Эта технология лежит в основе механизма установки и распространения приложений для окружения xdg-app. Технология OSTree очень похожа на технологию, лежащую в основе системы контроля версий git, но при этом она была спроектирована специально для работы с деревьями бинарных файлов большого размера. Как и технология, лежащая в основе git, она поддерживает концепцию репозиториев, коммитов и ветвей (ссылок). Ветви являются именами, которые соответствуют отдельным идентификаторам коммитов, отправленных в репозитории приложений.

На вашей машине уже должен быть создан локальный репозиторий OSTree, содержащий множество ссылок на сторонние репозитории. В процессе установки или обновления приложения из одного из таких сторонних репозиториев осуществляется операция, аналогичная операции, инициируемой с помощью команды ostree pull и заключающаяся в загрузке данных из стороннего репозитория и обновления соответствующей ветви в локальном репозитории (на уровне ссылок на файлы репозитория, что позволяет снизить нагрузку на систему).

Репозитории OSTree, создаваемые с помощью команды xdg-app build-export, являются репозиториями, которые могут обслуживаться обычным веб-сервером (они называются репозиториями типа archive-z2). Таким образом, для распространения вашего приложения вам придется всего лишь скопировать содержимое репозитория в открытую для публичного доступа директорию веб-сервера и передать строку URL для доступа к этой директории пользователям.

Однако, существуют некоторые нюансы, которые стоит принимать во внимание.

Во-первых, формат репозиториев archive-z2 подразумевает использование одного файла для каждого из файлов приложения. Это означает, что при выполнении операции загрузки данных из репозитория веб-серверу будет отправляться большое количество HTTP-запросов. Ввиду того, что обработка каждого из новых запросов связана с значительными затратами системных ресурсов, вам следует убедиться в том, что на вашем веб-сервере активирована поддержка механизма повторного использования соединений HTTP keep-alive.

Технология OSTree также включает поддержку механизма "статических файлов различий". Для его реализации используются отдельные файлы из репозитория, содержащие все необходимые данные для получения файлов приложения следующей ревизии (или первой ревизии). Для хранения этих файлов требуется дополнительное дисковое пространство, но при этом они помогают значительно повысить скорость загрузки файлов приложения.

Инструментарий xdg-app содержит инструмент build-update-repo, который очень полезен для управления репозиториями. Начиная с версии инструментария 0.4.13, данный инструмент поддерживает параметр --generate-static-deltas, позволяющий генерировать рассматриваемые файлы различий, а также некоторые другие другие параметры, позволяющие активировать полезные функции. Например, вы можете использовать следующую команду:

xdg-app build-update-repo --title="Название репозитория" repo

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

Данный инструмент также позволяет безвозвратно удалить из репозитория неиспользуемые объекты вместе с файлами различий (с помощью параметра --prune) и даже устаревшие ревизии приложения (с помощью параметра --prune-depth), что очень полезно при автоматическом обновлении содержимого репозиториев с ночными сборками приложений.

Другой полезной операцией, выполняемой инструментом build-update-repo, является извлечение информации о приложении формата AppStream. Данный инструмент сканирует все ветви репозитория в поисках файла xml с данными AppStream. Например, "Словарь GNOME", рассмотренный в третьей статье серии, содержит соответствующий файл по пути files/share/app-info/xmls/org.gnome.Dictionary.xml.gz. Все эти файлы, а также упомянутые в них файлы иконок собираются и помещаются в отдельную ветвь с данными AppStream для всего репозитория. Инструментарий xdg-app хранит локальные копии этих ветвей для всех удаленных репозиториев, причем каждая из них может быть обновлена в ручном режиме с помощью следующей команды:

$ xdg-app --user update --appstream nightly

Описанные копии используются инструментами для установки приложений с графическим интерфейсом, такими, как "Центр приложений GNOME", поэтому файлы с данными формата AppStream должны поставляться в комплекте с каждым из ваших приложений.

Примечание: инструмент xdg-app-builder автоматически исполняет команду appstream-compose сразу же после завершения сборки. Данная команда позволяет осуществить сбор информации из файлов Appdata и файлов меню окружения рабочего стола с последующим созданием необходимого файла с описанием приложения с расширением xml.gz и файла иконки. Таким образом создается и рассмотренный файл xml при сборке "Словаря GNOME".

Еще одним важным аспектом распространения собранных приложений являются цифровые подписи gpg. Технология OSTree предусматривает обязательный запрет на получение данных из удаленного репозитория в том случае, если этот репозиторий не содержит цифровой подписи. Данный запрет можно обойти лишь использовав параметр --no-gpg-verify при добавлении стороннего репозитория (либо изменив параметры уже добавленного репозитория с помощью команды xdg-app remote-modify).

Технология OSTree предусматривает необходимость присваивания цифровой подписи каждому из коммитов репозитория, а также каждому из файлов, содержащих списки всех ветвей отдельных репозиториев. Перечисленные объекты создаются с помощью инструментов build-update-repo и build-export, а также опосредованно с помощью инструмента xdg-app-builder. Таким образом, при использовании соответствующих команд для присваивания объектам репозитория цифровых подписей вам следует передавать пути к файлам ключей gpg и, возможно, путь к директории с файлами ключей gpg. Например:

$ xdg-app build-export --gpg-sign=KEYID --gpg-homedir=/some/dir appdir repo

На этом данная статей серия статей может считаться оконечной - теперь вы обладаете достаточным объемом информации для сборки и распространения своих приложений.