ZYpp - ZYpp
Начальная версия | 14 января 2006 г . |
---|---|
Стабильный выпуск | 17.25.8 / 24 февраля 2021 г .
|
Репозиторий | |
Написано в | C ++ |
Операционная система | Linux |
Тип | Менеджер пакетов |
Лицензия | Стандартная общественная лицензия GNU |
Веб-сайт | en |
ZYpp (или libzypp ; «продукты паттернов пакетов Zen / YaST» ) - это механизм диспетчера пакетов, который поддерживает приложения Linux, такие как YaST , Zypper, и реализацию PackageKit для openSUSE и SUSE Linux Enterprise . В отличие от некоторых более простых менеджеров пакетов, он предоставляет решатель выполнимости для вычисления зависимостей пакетов. Это бесплатный программный проект с открытым исходным кодом, спонсируемый Novell и лицензируемый в соответствии с условиями GNU General Public License v2 или более поздней версии . ZYpp реализован в основном на языке программирования C ++ .
Zypper - это собственный интерфейс командной строки диспетчера пакетов ZYpp для установки, удаления, обновления и запроса пакетов программного обеспечения с локальных или удаленных (сетевых) носителей. Его графический эквивалент - модуль диспетчера пакетов YaST . Он используется в openSUSE с версии 10.2 beta1. В openSUSE 11.1 Zypper достиг версии 1.0. 2 июня 2009 года Ark Linux объявил, что он завершил свой обзор решателей зависимостей и выбрал ZYpp и его инструменты для замены устаревшего APT-RPM в качестве первого дистрибутива, который сделает это. Zypper также входит в состав мобильных дистрибутивов Linux MeeGo , Sailfish OS и Tizen .
История
Цель
После последовательных приобретений Ximian и SuSE GmbH в 2003 году Novell решила объединить обе системы управления пакетами, YaST package manager и Red Carpet , используя лучший в своем классе подход, поскольку эти два решения до сих пор использовались в Novell. Глядя на существующие инструменты с открытым исходным кодом и их зрелость, доступную еще в 2005 году, ни один из них не отвечал требованиям и не мог нормально работать с существующим программным обеспечением инфраструктуры управления Linux, разработанным Ximian и SUSE, поэтому было решено извлечь лучшие идеи из существующих штук и работать над новой реализацией. Полученная в результате библиотека Libzypp должна была стать механизмом управления программным обеспечением для дистрибутивов SUSE и компонентом Linux Management пакета Novell ZENworks Management.
Первые дни
Решатель Libzypp был портом решателя Red Carpet, который был написан для обновления пакетов в установленных системах. Использование его для полного процесса установки довело его до предела, а добавление расширений, таких как поддержка слабых зависимостей и исправлений, сделало его хрупким и непредсказуемым. Хотя эта первая версия решателя ZYpp работала удовлетворительно, на корпоративных продуктах компании с подключенным демоном ZMD она привела к выпуску openSUSE 10.1, который вышел в мае 2006 г. с системным пакетом, не работающим должным образом. В декабре 2006 года в выпуске openSUSE 10.2 были исправлены некоторые недостатки предыдущего выпуска с использованием обновленной версии ZYpp v2. Впоследствии ZMD был удален из версии 10.3 и зарезервирован только для продуктов компании Enterprise. Хотя ZYpp v3 предоставил openSUSE относительно хороший менеджер пакетов, эквивалентный другим существующим менеджерам пакетов, он страдал от некоторых недостатков в его реализации, которые сильно ограничивали его быстродействие.
Интеграция с SAT-решателем
Сфера, в которой libzypp нуждалась в улучшении, - это скорость решателя зависимостей. libsolv пишется и выпускается под пересмотренной лицензией BSD .
Такие проекты, как Optimal Package Install / Uninstall Manager (OPIUM) и MANCOOSI, пытались исправить проблемы, связанные с решением зависимостей, с помощью решателя SAT . Традиционные решатели, такие как Advanced Packaging Tool (APT), иногда обнаруживают неприемлемые недостатки. Было решено интегрировать алгоритмы SAT в стек ZYpp; Используемые алгоритмы решателя были основаны на популярном решателе minisat.
Реализация SAT-решателя в том виде, в каком она представлена в openSUSE 11.0, основана на двух основных, но независимых блоках:
- Использование словаря данных для хранения и извлечения информации о пакетах и зависимостях. Был создан новый формат solv, в котором репозиторий хранится в виде строкового словаря, словаря отношений, а затем и всех зависимостей пакетов. Чтение и объединение нескольких репозиториев Solv занимает всего миллисекунды.
- Использование выполнимости для вычисления зависимостей пакетов. Проблема логической выполнимости - это хорошо изученная проблема , имеющая множество примеров ее решения. Это очень быстро, так как сложность решения пакетов очень низкая по сравнению с другими областями, где используются решатели SAT. Кроме того, он не требует сложных алгоритмов и может предоставить понятные предложения, вычисляя доказательства того, почему проблема нерешаема.
После нескольких месяцев работы результаты тестов этой четвертой версии ZYpp, интегрированной с решателем SAT, более чем обнадеживают: YaST и Zypper опережают другие менеджеры пакетов на основе RPM по скорости и размеру.