Библиотека сайта rus-linux.net
Сборка приложения для запуска в изолированном окружении xdg-app - часть 1
Оригинал: Building an xdg-app - part 1
Автор: Alexander Larsson
Дата публикации: 19 февраля 2016 г.
Перевод: А. Панин
Дата перевода: 14 апреля 2016 г.
Сборка приложения для запуска в изолированном окружении xdg-app - часть 1
Добро пожаловать в первую статью серии о сборке приложений для запуска в изолированном окружении xdg-app.
В первую очередь вы должны установить пакеты программного обеспечения с утилитами xdg-app. Эти пакеты уже размещены в официальном репозитории пакетов программного обеспечения дистрибутива Fedora 23, но пока не вошли в состав других дистрибутивов. По этой причине я создал данную страницу, на которой вы можете найти инструкции по подключению дополнительных репозиториев с пакетами программного обеспечения для всех остальных дистрибутивов.
В данном руководстве я буду использовать инструментарий xdg-app версии 0.4.12, которая является на данный момент последней. Более старые версии инструментария также должны справляться с поставленными задачами, но в случае их использования могут потребоваться минимальные изменения команд, кроме того ими могут поддерживаться не все описанные возможности.
Фундаментальной концепцией технологии xdg-app является разделение окружений исполнения и приложений. Каждое из приложений должно зависеть от окружения исполнения, которое содержит основные используемые этим приложением библиотеки. Окружения исполнения обычно одновременно используются множеством приложений, причем пользователь может установить в свою систему сразу несколько окружений исполнения.
В данной статье мы будем использовать ночную сборку окружения исполнения проекта GNOME. Она доступна в репозитории xdg-app, расположенном по адресу sdk.gnome.org. Если вы уже пробовали работать с этим окружением исполнения, вам ничего не нужно делать, если нет - следует установить его в систему следующим образом:
$ wget https://people.gnome.org/~alexl/keys/nightly.gpg $ xdg-app --user remote-add --gpg-key=nightly.gpg gnome-nightly http://sdk.gnome.org/nightly/repo $ xdg-app --user install gnome-nightly org.gnome.Platform
После установки окружения исполнения вы можете обновить его следующим образом:
$ xdg-app --user update org.gnome.Platform
Теперь у нас есть все необходимое для сборки простого приложения с целью последующего запуска в изолированном окружении. Для начала давайте создадим простейшее приложение. Сохраните следующие строки в файле с именем hello.sh
:
#!/bin/sh echo "Hello world, from a sandbox"
Теперь нужно систематизировать информацию, относящуюся к нашему приложению. В окружении xdg-app для хранения этой информации используется файл с парами "ключ-значение" с именем meta-data
. В случае рассматриваемого простейшего приложения этот файл будет содержать достаточно малый объем информации, поэтому мы можем создать его вручную:
[Application] name=org.test.Hello runtime=org.gnome.Platform/x86_64/master command=hello.sh
Как вы видите, в данном файле приводятся идентификаторы приложения (org.test.Hello
), окружения исполнения, а также команда, с помощью которой должен осуществляться запуск приложения.
На самом деле, окружению xdg-app не требуется больший объем информации, но при этом каждое приложение и должно иметь собственную структуру директорий. Располагая этой информацией, мы можем создать директорию приложения appdir
со следующей структурой поддиректорий и разместить исполняемый файл нашего приложения в одной из них следующим образом:
$ mkdir appdir $ mkdir appdir/files $ mkdir appdir/files/bin $ mkdir appdir/export $ cp metadata appdir/ $ cp hello.sh appdir/files/bin/ $ chmod a+x appdir/files/bin/hello.sh
Для того, чтобы утилита xdg-app могла установить наше приложение, мы должны разместить его в репозитории. Это делается с помощью команды build-export
:
$ xdg-app build-export repo appdir
Данная команда позволит инициализировать локальный репозиторий в рамках директории "repo"
и экспортировать приложение в него. Мы можем протестировать корректность ее работы с помощью следующих команд:
$ xdg-app --user remote-add --no-gpg-verify tutorial-repo repo $ xdg-app --user install tutorial-repo org.test.Hello $ xdg-app run org.test.Hello
В результате с помощью терминала должна быть выведена строка "Hello world, from a sandbox" и это означает, что мы только что создали, упаковали, установили в систему и запустили наше первое приложение для изолированного окружения xdg-app!
Если вы желаете немного изучить изолированное окружение, вы можете воспользоваться аргументом --command=sh
утилиты xdg-app, который позволит вам воспользоваться командной оболочкой, запущенной в рамках этого окружения, для изучения его структуры. Например:
[alex@localhost ~]$ xdg-app run --command=sh org.test.Hello sh-4.3$ ls -lR /app /app: total 0 drwxr-xr-x 1 alex wheel 16 jan 1 1970 bin /app/bin: total 4 -rwxr-xr-x 2 alex wheel 45 jan 1 1970 hello.sh sh-4.3$ echo $PATH /app/bin:/usr/bin sh-4.3$ hello.sh Hello world, from a sandbox sh-4.3$ ls -la ~/ total 0 drwxr-xr-x 3 alex wheel 60 feb 19 16:11 . drwxr-xr-x 3 alex wheel 60 feb 19 16:11 .. drwxr-xr-x 3 alex wheel 60 feb 19 16:11 .var sh-4.3$ ls ~/.var/app/org.test.Hello/ cache config data
Несложно догадаться, что в рамках изолированного окружения все файлы приложения расположены в директории /app
, а переменная окружения PATH
указывает на директорию /app/bin
, что означает, что вы можете без проблем запустить его. Также очевидно, что по умолчанию приложение не имеет доступа к каким-либо файлам из домашней директории пользователя (она пуста) за исключением директории ~/.var/app/org.test.Hello
, в которой оно хранит свои данные. Также вы можете исследовать директорию /usr
, в которой хранятся файлы окружения исполнения.
На этом все. Это была лишь вводная статья из серии статей по сборке приложений для запуска в изолированном окружении xdg-app; в следующей статье мы рассмотрим вопрос использования команды xdg-app build
и SDK для сборки более сложных приложений.