Выпуск xdg-app 0.5.0, изолированных контейнеров для графических приложений
19 марта 2016 года
Представлен выпуск инструментария xdg-app, предназначенного для организации распространения графических приложений в самодостаточных контейнерах, не привязанных к конкретному дистрибутиву Linux и надёжно изолирующих приложение от остальной системы. Контейнеры позволяют упростить распространение сторонних программ, не входящих в штатные репозитории дистрибутивов, за счет подготовки одного универсального контейнера без формирования отдельных сборок для каждого дистрибутива.
При создании проекта были поставлены две ключевые цели: предоставление разработчикам сторонних программ возможности создавать и распространять приложения, работающие в разных дистрибутивах, и обеспечение работы с минимальным доступом к системе (доступ только к сетевым функциям и файлам пользователя, связанным с приложением). Отмечается, что в выпуске xdg-app 0.5.0 полностью реализована вся функциональность, необходимая для достижения первой цели. В том числе доступны средства для сборки контейнеров приложений, поддержки различных графических фронтэндов, использования в различных дистрибутивах. В будущем внимание планируется сосредоточить на развитии средств для sandbox-изоляции и проброса данных в контейнер.
Особенности xdg-app 0.5.0:
- Новая библиотека libxdg-app, предоставляющая API для создания графических интерфейсов, работающих поверх xdg-app. Например, библиотека задействована для поддержки контейнеров-приложений в gnome-software и Papyros software center.
- Поддержка обработки метаданных AppData, определяющих такую видимую пользователю информацию о пакете, как имя программы, описание, пиктограммы, скриншоты и списки изменений. Интеграция AppData позволила обеспечить в gnome-software удобную навигацию по репозиториям xdg-app;
- Упрощён интерфейс командной строки, доступный через утилиту xdg-app;
- Добавлена новая утилита xdg-app-helper, упрощающая процесс сборки приложений в форме окружений xdg-app;
- Реализована возможность формирования однофайловых образов приложений, которые можно использовать для поставки приложения на физическом носителе;
- Готовые пакеты сформированы для дистрибутивов Fedora, Ubuntu, Debian, Arch Linux и Mageia.
Изолированное окружение формируется из типового системного окружения (runtime), устанавливаемого через специальный репозиторий (Архивная копия от 23 января 2018 на Wayback Machine), и дополнительных зависимостей (bundle), связанных с приложением. В сумме runtime и bundle образуют начинку контейнера, при том, что runtime устанавливается отдельно и привязывается сразу к нескольким контейнерам, что позволяет обойтись без дублирования общих для контейнеров системных файлов. В одной системе может быть установлено несколько разных runtime (GNOME, KDE) или несколько версий одного runtime (GNOME 3.16, GNOME 3.18), в зависимости от требований используемых программ. Контейнер с приложением в качестве зависимости использует привязку только к определённому runtime, без учета отдельных пакетов, из которых состоит runtime. Все недостающие элементы упаковываются непосредственно вместе с приложением. При формировании контейнера содержимое runtime монтируется как раздел /usr, а bundle монтируется в директорию /self.
Начинка runtime и контейнеров приложений формируется с использованием технологии OSTree, при которой образ атомарно обновляется из Git-подобного хранилища, позволяющего применять методы версионного контроля к компонентам дистрибутива (например, можно быстро откатить систему к прошлому состоянию). RPM-пакеты транслируются в репозиторий OSTree при помощи специальной прослойки rpm-ostree (Архивная копия от 5 июля 2015 на Wayback Machine). Отдельная установка и обновление пакетов внутри рабочего окружения не поддерживается, система обновляется не на уровне отдельных компонентов, а целиком, атомарно меняя своё состояние. Предоставляются средства для инкрементального применения обновлений, избавляющие от необходимости полной замены образа при каждом обновлении.
Формируемое изолированное окружение полностью независимо от используемого дистрибутива, не имеет доступа к файлам и процессам пользователя или основной системы, не может напрямую обращаться к оборудованию, за исключением вывода через DRI, и сетевой подсистеме. Вывод графики и организация ввода реализована при помощи протокола Wayland (X11 не поддерживается). Взаимодействия со внешней средой построено на основе системы обмена сообщениями kdbus. Для изоляции используются традиционные для Linux технологии контейнерной виртуализации, основанные на использовании cgroups, пространств имён (namespaces) и SELinux. Для вывода звука применяется PulseAudio.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.