Авторские статьи

Процесс загрузки приложения в репозиторий Ubuntu.


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

Убунту, как систему, можно представить в виде двух слоёв:

  • Система. Ядро операционной системы включает в себя системный софт, требующийся для загрузки и запуска сервисов. А так же всё необходимое для отображения пользовательского интерфейса.
  • Приложения. Прикладной софт, который работает над Системой и где пользователь проводит бо́льшую часть своего времени.

В далёком 2004 году, когда появилась на свет Убунту, понятия Система и Приложения были тесно переплетены между собой. Разработчики Убунту синхронизировались с репозиторием Дебиан, применяли свои патчи и получался новый релиз Убунту. А всё что можно было найти в репозиториях Дебиан и Убунту было доступны пользователям как Приложения.

У такого подхода есть врождённые проблемы:

  • Чтобы сделать доступным приложение в Убунту, нужно создать deb пакет. Deb пакеты разработаны для использования людьми, создающие операционные системы, а не для разработчиков приложений. То есть разработчики Дебиан больше системщики, чем разрабы приложений для пользователей и созданный ими формат deb ближе к Системе, чем к Приложению.
  • Такой подход означает, что можно написать приложение, используя любой тулкит или платформу, доступную в репозиториях. К сожалению, несмотря на усилия обеспечить хорошей поддержкой GTK и Qt приложения, в реальной жизни пользователи видят, что приложения выглядят по-разному и работают по разному. Такое положение дел начинает распространяться на команды разработчиков, которые пытаются угодить всем вкусам.
  • Если разработчик приложения хочет увидеть своё детище в репозиториях Убунту, то ему нужно или (а) быть разработчиком Убунту с доступом в систему отправки софта в репозитория или (б) убедить разработчиков Убунту одобрить и отправить его софт в репозиторий. С ростом количества приложений и желаний разработчиков видеть свои программы в репозиториях, становится трудно "масштабироваться" в данной ситуации.

Ситуацию пытались решить с помощью создания Application Review Board (ARB). ARB - это группа людей из сообщества, которая рассматривала пакеты с упрощёнными критериями. К сожалению, несмотря на все усилия ARB, технические ограничения взяли вверх.

Основным техническим ограничением, с которыми пришлось столкнуться группе ARB, стало отсутствие в Убунту "песочницы" (sandbox) для непослушных приложений. На практике это означало, что каждое приложение, ожидающее рассмотрения, требовало полной проверки кода для каждой своей версии. То есть, если разработчик приложения выпустил версию 1.0, а через пару недель вышла 1.1, то полную проверку кода нужно делать у двух версий. Добавьте сюда, что в Дебиан пакете (.deb) есть понятие maintainer scripts, которые выполняют действия в системе от root'а и их нужно тоже проверять.

Растущий список приложений, требующих рассмотрения, оставил человеческие возможности группы ARB далеко позади. Как результат, разочарование для всех: для ARB; для разработчиков приложений, ждущих одобрения; для всех тех, кто работает на улучшением Убунту.

Новая система загрузки и одобрения для приложений.

Ещё раз о недостатках предыдущей системы:

  • Процесс создания пакета сложен.
  • Для приложений нет песочниц, поэтому требуется полная проверка кода.
  • Скрипты в пакете (maintainer scripts), которые выполняют определённые действия при операциях над пакетом, могут содержать злонамеренный код, поэтому их нужно проверять.
  • Приложения долго ждут одобрения из-за вышеперечисленных технических ограничений.

Разработчики из Canonical начали создавать черновой вариант новой системы, которая радикально улучшит ситуацию.

Главные части новой системы это пакеты click, песочница, отправка на рассмотрение.


Пакеты Click.

Чтобы понять новый формат пакета Клик, вспомните два уровня:

  • Система. Ядро операционной системы включает в себя системный софт, требующийся для загрузки и запуска сервисов. А так же всё необходимое для отображения пользовательского интерфейса.
  • Приложения. Прикладной софт, который работает над Системой и где пользователь проводит бо́льшую часть своего времени.

Формат пакета deb обеспечивает всем необходимым для создания Операционной Системы. Но разработчикам приложений, которые хотят просто упаковать код программы, в нечто, что может быть загружено пользователем, предоставлен новый формат пакета под названием Click.

Пакет Click очень просто создать. В вашем открытом проекте в Ubuntu SDK вы просто нажимаете кнопку - создать пакет Click. Всё! Пакеты Click не содержат maintainer scripts, они просто не нужны подавляющему большинству прикладных программ. Это сразу удаляет вопрос с безопасностью maintainer scripts и проверку их кода.

Ключевым преимуществом Click является отсутствие полного разрешения зависимостей (full dependency resolution). Многие знают что происходит при вызове sudo apt-get update. Скачивается актуальный список доступных в репозиториях программ и выясняются все зависимости, типа GIMP зависит от GTK, который требует X. Это занимает много времени и плохо масштабируется, когда пакетов программ тысячи и они постоянно обновляются.

Пакет Click просто зависит от Ubuntu SDK. Это означает, что не нужно беспокоится о сложных зависимостях. Разработчики Canonical знают что зависимость одна - Ubuntu SDK.

Вся информация об зависимостях между различными модулями может храниться в веб сервисе, который будет обслуживать пользователей, вместо ведения локальных списков. Ведь пользователю всё равно нужно сетевое соединение для загрузки пакета, так почему бы не спросить об пакете и зависимостях у веб службы?

Песочница.

Тут предстоит проделать много работы. Команда разработчиков, создающая новую систему, подготовила огромный список требований, которые необходимы для вердикта - приложение можно автоматически одобрить без полной проверки кода человеком.

В списке требований не только защита системы от возможных несанкционированных вызовов, но и решения вопросов о перехвате (sniffing) клавиатурных событий в приложениях Х.

Ubuntu Security Team работает над песочницей в рамках всей системы и бо́льшая часть работы уже завершена. Наработки команды безопасности отчасти повлияли на некоторые дизайнерские решения для нового дисплейного сервера Mir и его работу с клавиатурными событиями.

Основным результатом работы разработчиков из Ubuntu Security Team стало создание песочницы, которая защищает всю систему от тестового злонамеренного приложения.

Песочница существенно убавляет необходимость в полной проверке кода приложений, что в основном и снижало скорость рассмотрения программ. Всё это в сочетании с пакетами Click, которые не несут в себе maintainer скрипты и не обладают сложными цепочками зависимостей, делает проверку программы более эффективной и быстрой!

Отправка на рассмотрение.

Процедура отправки программы на рассмотрение останется в целом такой же как и прежде. Как и прежде разработчик программы указывает пакет для отправки, заполняет информацию о программе, добавляет скриншоты и так далее. Затем программа попадает в очередь рассмотрения, прежде чем попадёт в репозитории и потом к пользователям.

Хорошая новость в том, что теперь просмотр будет требовать небольшого количества информации: проверки прав доступа, мета данных и ещё пару простых вещей. Тут стоит сказать спасибо формату пакета Click и песочнице! Анализ приложения будет занимать 15 минут, а не много дней. Одобрение приложений должно идти более быстрыми темпами.

Если приложение было одобрено, то оно может быть установлено на любом устройстве под управлением Убунту. Вскоре появится функционал, позволяющий отображать только приложения специфичные для данного устройства. Например, показать для телефона программы с "телефонным" UI.

Где это всё?

Формат пакета Click в основе своей завершён. Есть инструменты создания click пакетов в Ubuntu SDK и установке их в систему.

Бо́льшая часть работы над песочницей завершена, НО из-за ситуации с возможностью перехватывать клавиатурные события в Х (много ненужной работы исправлять это), песочница будет внедрена в Убунту только когда Mir полностью заменит Х на посту дисплейного сервера. Это произойдёт только в Ubuntu 14.10.

Цель одна. Сделать единую операционную систему для всех платформ, не важно десктоп это или смартфон. На единой Убунту будут доступны ещё больше приложений, чем прежде, и появление новых приложений и их версий должно происходит быстро и легко для разработчиков и пользователей.

Дополнительные материалы:
Оглавление "серии заметок об Ubuntu".
Ubuntu SDK и разработка ПО. Следующая статья и серии.

Дата последней правки: 2023-03-31 16:42:54

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта