ZYpp (или libzypp ; «Zen/YaST Packages Patches Patterns Products» [3] ) — это механизм менеджера пакетов , который поддерживает такие приложения Linux, как YaST , Zypper и реализацию PackageKit для openSUSE и SUSE Linux Enterprise . [4] В отличие от некоторых более простых менеджеров пакетов, он предоставляет решатель выполнимости для вычисления зависимостей пакетов. [5] Это бесплатный программный проект с открытым исходным кодом, спонсируемый SUSE и лицензируемый в соответствии с условиями 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 [6] в качестве первого дистрибутива, сделавшего это. Zypper также входит в состав мобильных дистрибутивов Linux MeeGo , Sailfish OS и Tizen .
После последовательного приобретения Ximian и SuSE GmbH в 2003 году Novell решила объединить обе системы управления пакетами, менеджер пакетов YaST и Red Carpet , используя лучший в своем классе подход, поскольку до сих пор эти два решения использовались в Novell. Глядя на существующие инструменты с открытым исходным кодом и их зрелость, доступные еще в 2005 году, ни один из них не отвечал требованиям и не мог бесперебойно работать с существующим программным обеспечением инфраструктуры управления Linux, разработанным Ximian и SUSE, поэтому было решено перенять лучшие идеи из существующих частей и работать над новой реализацией. Libzypp, получившаяся в результате библиотека, планировалось стать механизмом управления программным обеспечением дистрибутивов SUSE и компонентом управления Linux пакета Novell ZENworks Management.
Решатель Libzypp был портом решателя Red Carpet, который был написан для обновления пакетов в установленных системах. Использование его для полного процесса установки довело его до предела, а добавление расширений, таких как поддержка слабых зависимостей и исправлений, сделало его хрупким и непредсказуемым. [7] Хотя эта первая версия решателя ZYpp работала удовлетворительно, на корпоративных продуктах компании со связанным демоном ZMD это привело к выпуску openSUSE 10.1, который вышел в мае 2006 года с системным пакетом, который не работал должным образом. В декабре 2006 года в выпуске openSUSE 10.2 были исправлены некоторые дефекты предыдущего выпуска с использованием обновленной версии ZYpp v2. Впоследствии ZMD был удален из версии 10.3 и зарезервирован только для продуктов компании Enterprise. Хотя ZYpp v3 предоставил openSUSE относительно хороший менеджер пакетов, эквивалентный другим существующим менеджерам пакетов, в его реализации были некоторые недостатки, которые сильно ограничивали его скорость.
Областью, где libzypp нуждался в улучшении, была скорость решателя зависимостей. libsolv пишется и выпускается под пересмотренной лицензией BSD . [8]
Такие проекты, как Optimal Package Install/Uninstall Manager (OPIUM) [9] [10] и MANCOOSI [11], пытались исправить проблемы решения зависимостей с помощью решателя SAT . Традиционные решатели, такие как Advanced Packaging Tool (APT), иногда демонстрируют неприемлемые недостатки. Было решено интегрировать алгоритмы SAT в стек ZYpp; Используемые алгоритмы решателя были основаны на популярном решателе minisat. [12]
Реализация решателя SAT в openSUSE 11.0 основана на двух основных, но независимых блоках:
После нескольких месяцев работы результаты тестов четвертой версии ZYpp, интегрированной с решателем SAT, более чем обнадеживают: YaST и Zypper опережают другие менеджеры пакетов на основе RPM по скорости и размеру. [13] [14]
{{citation}}
: CS1 maint: числовые имена: список авторов ( ссылка )