Разработчики GNOME развивают систему контейнеров для запуска графических приложений
23 января 2015 года
Маттиас Класен (Matthias Clasen), лидер Fedora Desktop Team и участник GNOME Release Team, рассказал о состоянии разработки механизма поставки программ для GNOME в форме изолированных контейнеров, включающих все необходимые для работы приложения зависимости и не привязанных к конкретному дистрибутиву Linux. Подобные контейнеры позволят упростить распространение сторонних программ, не входящих в штатные репозитории дистрибутивов, за счет подготовки одного универсального контейнера без формирования отдельных сборок для каждого дистрибутива. Конечному пользователю установка подобных контейнеров даст гарантию, что приложение будет надёжно отделено от основной системы, а также позволит не нагромождать систему дополнительными зависимостями и пакетами.
Сообщается, что проект достиг состояния, пригодного для проведения экспериментов энтузиастами. Для изоляции приложения используются традиционные для Linux технологии контейнерной виртуализации, основанные на использовании cgroups, пространств имён (namespaces) и SELinux. Для взаимодействия со внешней средой используется система обмена сообщениями kdbus. Вывод графики и организация ввода осуществляется при помощи протокола Wayland (X11 не поддерживается).
Окружение в котором работает приложение формируется из типового системного runtime-окружения и связанных с приложением дополнительных зависимостей (bundle). В сумме runtime и bundle образуют начинку контейнера. Для использования в одной системе может быть установлено несколько разных runtime (GNOME 3.14, KDE 5.6) или несколько версий одного runtime (GNOME 3.14, GNOME 3.16), в зависимости от требований используемых программ. При этом bundle c программой в качестве зависимости использует только привязку к определённому runtime, без учета отдельных пакетов, из которых состоит runtime. Все недостающие элементы упаковываются непосредственно вместе с приложением в bundle.
При формировании контейнера содержимое runtime монтируется как раздел /usr, а bundle монтируется в директорию /self. Для разработчиков приложений предлагается расширенный sdk runtime, который выступает в роли аналога SDK и включает помимо файлов, используемых для запуска программы, компоненты, требуемые для сборки приложения. Командой "xdg-app run" осуществляется формирование контейнера и запуск программы, а командой "xdg-app build" выполняется создание контейнера для сборки программы.
Распространение runtime и приложений, а также обновлений, производится с использованием технологии OSTree, при которой образ атомарно обновляется из Git-подобного хранилища, позволяющего применять методы версионного контроля к компонентам дистрибутива (например, можно быстро откатить систему к прошлому состоянию). RPM-пакеты транслируются в репозиторий OSTree при помощи специальной прослойки rpm-ostree. Отдельная установка и обновление пакетов внутри рабочего окружения не поддерживается, система обновляется не на уровне отдельных компонентов, а целиком, атомарно меняя своё состояние. Предоставляются средства для инкрементального применения обновлений, избавляющие от необходимости полной замены образа при каждом обновлении. В настоящее время уже запущен репозиторий с несколькими экспериментальными приложениями и подготовлен runtime на основе Yocto Linux и GNOME 3.15.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.