Интервью

Интервью

Михаил Пожидаев («Альт Линукс») об отечественном менеджере пакетов Deepsolver

Евгений Крестников

Опубликовано 13 июля 2012 года

Существующие менеджеры пакетов для Linux часто критикуют за высокую для неопытных пользователей сложность, трудности с разрешением зависимостей между пакетами и тому подобные вещи. О новых подходах к управлению установленными программами задумываются разработчики многих дистрибутивов, и российские компании не исключение. Инженер-программист «Альт Линукс», кандидат технических наук Михаил Пожидаев рассказал «Компьютерре» о Deepsolver — перспективной разработке, которая может заменить в дистрибутивах ALT Linux использующийся сейчас "Advanced Packaging Tool" (APT).

- Что такое Deepsolver, и зачем он нужен? Какие задачи должен решать продукт, и какова его архитектура?

- Главная задача проекта — управление установленными программами. Deepsolver должен стать платформой, на основе которой могут создаваться различные утилиты поддержки операционной системы в актуальном и целостном состоянии. Дизайн проекта разбит на три основные компоненты: подсистема внесения изменений в ОС, подсистема управления информацией о пакетах и подсистема обслуживания репозиториев в сети. Внутри каждой компоненты предусмотрены различные механизмы унификации, делающие реализации ключевых алгоритмов взаимозаменяемыми.

- Продукт работает только с rpm? Есть ли возможность «подружить» его с другими пакетными менеджерами?

- Архитектурно это возможно. Начальная реализация предполагает взаимодействие с rpm в том виде, в каком он используется в ALT Linux. Мы надеемся, что появление других интерфейсов к пакетным системам — это вопрос времени. Возможно, своими силами предложим реализацию для rpm из Fedora.

- Речь идёт только о системе управления пакетами, а не, скажем, о неком сервисе автосборки по типу OBS или ABF?

- В ALT Linux сборка пакетов осуществляется в изолированной chroot-среде, обслуживанием которой занимается Hasher. Наполнение среды основано на сборочных зависимостях, обработка которых выполняется менеджером пакетов. Таким образом, сам Deepsolver автоматизированной сборкой не занимается, но является одним из ключевых компонентов в решении этой задачи.

- Как возникла идея создать замену APT? Чего не хватает в существующей системе, и в чём преимущество Deepsolver над аналогичными решениями?

- Здесь немалую роль играет понятие свободы и независимости. Отрицать этого нельзя. В сообществе есть множество идей и предложений, как сделать управление программами проще и понятней. Возможность их сначала экспериментального, а затем и постоянного внедрения — вопрос перспективности дистрибутива. В частности, ситуация, когда пакеты с пользовательскими приложениями идут вперемешку с пакетами библиотек, вспомогательных данных и пр., явно не может способствовать распространению дистрибутива среди массовых пользователей: человек просто теряется. У нас устойчивой была тема формирования списка доступных программ на основе desktop-файлов в сочетании с дополнительной идеей удаления пакетов-библиотек после удаления использующих их приложений. Хорошо это или плохо — так делать, сказать наперёд никто не может, это надо пробовать; шансы хорошие, но более конкретного ответа пока нет. По этой причине информационная подсистема у нас выделена в отдельную компоненту, в которой можно делать многие вещи, не боясь задеть скрупулёзно настраиваемый механизм обработки зависимостей.

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

Собственная реализация обработки зависимостей Deepsolver основана на полиномиальном полностью детерминированном алгоритме с наложением некоторых дополнительных ограничений на задачу, которая должна дать гарантированный минимум, подходящий под требования промышленного применения. Последующее добавление приближенных алгоритмов без ограничений на задачу не запрещается, обязательно будем пытаться делать это, чтобы удобство пользователя попутно не страдало. Начнём, скорее всего, с попытки задействования libsolv. Если всё пройдёт удачно — отлично, если же нет — выполним свою реализацию minisat или другого подходящего алгоритма.

Deepsolver предоставляет некоторый достаточный и отшлифованный минимальный функционал по умолчанию, но прочие идеи не запрещаются. Это одно из ключевых положений нашей архитектуры. В целом подобных деталей очень много, и устраниться от них нельзя. Реализовать их в APT крайне тяжело, это был бы в любом случае почти новый APT, не говоря уже о том, что скорость работы существующей системы не удовлетворяет современным требованиям масштабируемости.

- Deepsolver создан с нуля или является развитием уже существующих систем управления пакетами?

- Разработка ведётся с чистого листа, но с использованием различных вспомогательных библиотек, как, например, libcurl и пр.

- Кто занимается разработкой Deepsolver? Это проект «Альт Линукс» или возникшего вокруг продуктов компании сообщества?

- Разработку ведут сотрудники компании на постоянной основе. Руководство проектом и принятие основных технических решений выполняет Дмитрий Левин, который занимается основными техническими вопросами в компании. Для меня реализация и отладка компонентов Deepsolver — это основная рабочая задача. Да, это во всех отношениях проект «Альт Линукс», идея появилась непосредственно внутри компании. Но и сообщество принимает достаточно активное участие в обсуждении деталей развития. В частности, идеи для будущей реализаций мы берём прежде всего из сообщества, и в них нет недостатка.

- Есть ли у «Альт Линукс» планы по отказу от APT и переходу на новую систему управления пакетами?

- Ответ на вопрос об отказе от APT даст только время. Как бы то ни было, абсолютно неразумно разрабатывать Deepsolver, предполагая сохранение APT. Сроки работы мы оцениваем только приблизительно. Здесь необходимо найти компромисс между определением минимальных функций первой стабильной версии и наличием реализации новых идей, которые подтверждают, что Deepsolver является действительно чем-то новым, а не просто переписанным старым. Сейчас в активной разработке базовый компонент, который отвечает за вычисление списков пакетов для внесения изменений в состояние ОС. Это самый рисковый этап, после преодоления которого многое должно стать проще. Думаю, работа над ним продлится до конца лета, если не будет неожиданных трудностей. Не хотелось бы затягивать появление первой стабильной версии более, чем, скажем, на ближайший год, но это работа с сильной исследовательской составляющей, поэтому мы только предполагаем.

- Deepsolver — это свободный продукт? На каких условиях будут распространяться его исходные тексты?

- Да, безусловно. Сейчас выбрана GPL v.2, но в сообществе уже указывалось на необходимость изменения лицензии библиотечной части Deepsolver на LGPL. Этот вопрос пока не закрыли, но точно можно говорить, что это будет одна из распространённых свободных лицензий.

- Почему вы хотите распространять библиотечную часть на условиях LGPL? Предполагается возможность линковки с какими-то проприетарными компонентами?

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

- Насколько велик интерес к Deepsolver в сообществе ALT Linux? Интересуются ли продуктом сторонние разработчики свободного ПО (скажем, создатели других дистрибутивов GNU/Linux)?

- В достаточном интересе внутри сообщества «ALT Linux» сомневаться не приходится. В целом это легко объяснимо, поскольку APT стал всё чаще и чаще восприниматься как один из основных компонентов, сдерживающих развитие системы. В нашем списке-рассылке есть разработчики зарубежных дистрибутивов, и были общие отзывы от людей, принимающих активное участие в разработке свободных проектов. В случае списка рассылки Deepsolver есть проблема языкового барьера. Список объявлен двуязычным, но активное обсуждение продолжает вестись на русском языке. Разумеется, всё это не может способствовать интеграции иностранных разработчиков в наше сообщество, и я, увы, пока не вижу выхода из ситуации. Пытаемся сглаживать проблему поддержкой англоязычной версии сайта, периодически обращая внимание, что переход на английский язык необходим.

К оглавлению