Цифровой журнал «Компьютерра» № 129 (Журнал «Компьютерра») - страница 7

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

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

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

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

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

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

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