ZYpp
Pierwsze wydanie | 14 stycznia 2006 |
---|---|
Wersja stabilna | 17.31.8 / 13 lutego 2023
|
Magazyn | |
Napisane w | C++ |
System operacyjny | Linuks |
Typ | Menedżer pakietów |
Licencja | Powszechna Licencja Publiczna GNU |
Strona internetowa |
ZYpp (lub libzypp ; „Zen / YaST Packages Patches Patterns Products” ) to silnik menedżera pakietów , który obsługuje aplikacje Linuksa, takie jak YaST , Zypper oraz implementację PackageKit dla openSUSE i SUSE Linux Enterprise . W przeciwieństwie do niektórych bardziej podstawowych menedżerów pakietów, zapewnia narzędzie do rozwiązywania problemów spełniających wymagania do obliczania zależności pakietów. Jest to bezpłatny projekt oprogramowania typu open source, sponsorowany przez firmę Novell i licencjonowany zgodnie z warunkami Powszechnej Licencji Publicznej GNU w wersji 2 lub nowszej. ZYpp jest zaimplementowany głównie w języku programowania C++ .
Zypper to natywny interfejs wiersza poleceń menedżera pakietów ZYpp do instalowania, usuwania, aktualizowania i wysyłania zapytań dotyczących pakietów oprogramowania z nośników lokalnych lub zdalnych (sieciowych). Jego graficznym odpowiednikiem jest YaST . Jest używany w openSUSE od wersji 10.2 beta1. W openSUSE 11.1 Zypper osiągnął wersję 1.0. 2 czerwca 2009 Ark Linux ogłosił, że zakończył przegląd programów do rozwiązywania zależności i wybrał ZYpp i jego narzędzia, aby zastąpić starzejący się APT-RPM , jako pierwsza dystrybucja, która to zrobiła. Zypper jest również częścią mobilnych dystrybucji Linuksa MeeGo , Sailfish OS i Tizen .
Historia
Zamiar
Po kolejnych przejęciach firm Ximian i SuSE GmbH w 2003 r. firma Novell postanowiła połączyć oba systemy zarządzania pakietami, menedżera pakietów YaST i Red Carpet , zgodnie z najlepszym podejściem, ponieważ oba rozwiązania były dotychczas stosowane w firmie Novell. Patrząc na istniejące narzędzia open source i ich dojrzałość dostępną w 2005 roku, żadne nie spełniało wymagań i nie było w stanie płynnie współpracować z istniejącym oprogramowaniem do zarządzania infrastrukturą Linuksa opracowanym przez Ximian i SUSE, więc zdecydowano się uzyskać najlepsze pomysły z istniejących kawałków i do pracy nad nową realizacją. Powstała biblioteka Libzypp miała być silnikiem zarządzania oprogramowaniem w dystrybucjach SUSE i komponentem Linux Management pakietu Novell ZENworks Management.
Początki
Solver Libzyppa był portem z solvera Red Carpet, który został napisany w celu aktualizacji pakietów w zainstalowanych systemach. Używanie go do pełnego procesu instalacji doprowadziło go do granic możliwości, a dodanie rozszerzeń, takich jak obsługa słabych zależności i łat, uczyniło go kruchym i nieprzewidywalnym. Chociaż ta pierwsza wersja solvera ZYpp działała zadowalająco, na produktach korporacyjnych firmy ze sprzężonym demonem ZMD, doprowadziła do wydania openSUSE 10.1, które ukazało się w maju 2006 z pakietem systemowym nie działającym zgodnie z oczekiwaniami. W grudniu 2006 r. wersja openSUSE 10.2 poprawiła niektóre wady poprzedniej wersji, korzystając z odnowionej wersji ZYpp v2. ZMD został następnie usunięty z wersji 10.3 i zarezerwowany tylko dla produktów firmy Enterprise. Chociaż ZYpp v3 zapewniał openSUSE stosunkowo dobrego menedżera pakietów, równoważnego innym istniejącym menedżerom pakietów, miał pewne wady w implementacji, które znacznie ograniczały jego szybkość.
Integracja z solverem SAT
Obszarem, w którym biblioteka libzypp wymagała ulepszeń, była szybkość narzędzia do rozwiązywania zależności. libsolv jest pisany i wydawany na zmienionej licencji BSD .
Projekty takie jak Optimal Package Install/Uninstall Manager (OPIUM) i MANCOOSI próbowały naprawić problemy z rozwiązywaniem zależności za pomocą solvera SAT . Tradycyjne solwery, takie jak Advanced Packaging Tool (APT), czasami wykazują niedopuszczalne wady. Zdecydowano się zintegrować algorytmy SAT ze stosem ZYpp; Zastosowane algorytmy solvera oparto na popularnym solverze minisat.
Implementacja solvera SAT w openSUSE 11.0 opiera się na dwóch głównych, ale niezależnych blokach:
- Korzystanie ze słownika danych do przechowywania i pobierania informacji o pakietach i zależnościach. Stworzono nowy format solv, który przechowuje repozytorium jako słownik ciągów znaków, słownik relacji, a następnie wszystkie zależności pakietów. Odczytywanie i łączenie wielu repozytoriów solv zajmuje tylko milisekundy.
- Wykorzystanie spełnialności do obliczania zależności pakietów. Problem spełnialności boolowskiej jest dobrze zbadanym problemem z wieloma dostępnymi przykładowymi rozwiązaniami. Jest bardzo szybki, ponieważ złożoność rozwiązywania pakietów jest bardzo niska w porównaniu z innymi obszarami, w których stosowane są solwery SAT. Ponadto nie potrzebuje skomplikowanych algorytmów i może dostarczać zrozumiałych sugestii, obliczając dowód na to, dlaczego problem jest nierozwiązywalny.
Po kilku miesiącach pracy wyniki testów porównawczych czwartej wersji ZYpp zintegrowanej z solverem SAT są więcej niż zachęcające, wyprzedzając YaST i Zypper pod względem szybkości i rozmiaru innych menedżerów pakietów opartych na RPM.