ZYpp
ZYpp (nebo též libzypp) je balíčkovací systém, na němž běží linuxové aplikace jako YaST, Zypper a implementace PackageKitu od openSUSE/SUSE Linux Enterprise.[1] Na rozdíl od jiných běžných balíčkovacích systémů poskytuje výkonný SAT solver sloužící k výpočtu závislostí v balíčku a vhodného API v balíčkovacím systému.[2] Projekt je koncipován jako svobodný software s otevřenými zdrojovými kódy. Je sponzorován společností Novell a šířen pod licencí GNU General Public License verze 2 nebo novější.
Aktuální verze | 17.25.10 (28. dubna 2021) |
---|---|
Operační systém | Linux |
Vyvíjeno v | C++ |
Typ softwaru | Balíčkovací systém |
Licence | GNU GPL |
Web | LibZYpp Portal (anglicky) |
Některá data mohou pocházet z datové položky. |
Zypper je nativní příkazový řádek balíčkovacího systému ZYpp vhodný k instalacím, odstraňování, updatování a tvorbě dotazů pro softwarové balíčky lokálních nebo vzdálených (síťových) médií. Jeho grafický ekvivalent je modul pro správu balíčků s názvem YaST. Byl užíván v openSUSE od verze 10.2 beta1. V openSUSE 11.1 se nacházel Zypper ve verzi 1.0. Dne 2. června 2009 Ark Linux jako první linuxová distribuce oznámil, že přezkoumal záležitosti spojené s řešením závislostí a vybral ZYpp a jeho nástroje jako náhradníka vůči apt-rpm,[3]. Zypper je taktéž asimilován v mobilních linuxových distribucích, jako jsou MeeGo, Sailfish OS a Tizen.
Historie
Cíle
Jako následek po sobě jdoucích akvizic Ximian a SuSE GmbH v roce 2003 se společnost Novell rozhodla spojit balíčkovací systémy YaST a Red Carpet spolu s jejich nejlepšími vlastnostmi - oba dva systémy dosud Novell používal samostatně - v jeden balíčkovací systém. Při pohledu na existující open source nástroje dostupné v roce 2005 (a jejich úroveň) je patrné, že žádný z nich nesplňoval nezbytné požadavky a žádný nebyl schopen plynule pracovat s existující infrastrukturou pro správu softwaru vyvinutého společnostmi SUSE nebo Ximian. Proto bylo rozhodnuto vzít nejlepší myšlenky z existujících částí a vytvořit novou implementaci. Výsledná knihovna Libzypp měla za cíl být softwarový správce pro distribuce SUSE a manažer pro linuxové komponenty v řešení ZENworks.
První dny
Řešení Libzypp představovalo přechod z řešení Red Carpet napsaného na aktualizační balíčky v již nainstalovaných systémech, použití na kompletní instalační proces naráželo na limity tohoto systému a přidávání dalších rozšíření a patchů jej dělalo slabým a nepředvídatelným.[4][5] Ačkoli první verze Zypp solveru pracovala uspokojivě pouze pro několik firemních produktů se ZMD démonem, v průběhu vydání verze openSUSE 10.1 v květnu 2006 nepracovaly systémové balíčky dle očekávání prakticky vůbec. V prosinci 2006 byly ve verzi openSUSE 10.2 opraveny některé chyby předchozího vydání pomocí nové verze ZYpp v2. ZMD byl následně odejmut ve verzi 10.3 a zůstal vyhrazen pouze pro firemní produkty. Systém ZYpp verze 3 představoval pro openSUSE relativně dobrého správce balíčků srovnatelného s ostatními existujícími správci balíčků, nesl s sebou však i některá omezení, která značně omezovala jeho rychlost.
Integrace SAT solveru
Místo, kde libzypp potřeboval významné vylepšení, byla rychlost řešení závislostí.
Projekty jako OPIUM (za anglického Optimal Package Install/Uninstall Manager)[6][7] a MANCOOSI[8] se pokoušely odstranit problém s řešením závislostí pomocí SAT solveru. Tradiční solvery jako Apt často vykazují nepřijatelné nedostatky. SAT solver (řešící problém splnitelnosti) pracuje odlišně od obvyklých nástrojů jak je Apt.[9] Této vlastnosti se využilo při integraci SAT algoritmů do systému ZYpp, použitý algoritmus je založen na populárním minisat solveru.[10]
Implementace SAT solveru z openSUSE 11.0 je založena na dvou důležitých avšak nezávislých blocích:
- Využíváním datového slovníku umožňujícího rychlý způsob ukládání a načítání informací o balíčku a závislostech. Byl vytvořen nový formát, který ukládá informace do úložiště jako řetězec společně se všemi vztahy, které v balíčku existují. Čtení a slučování více informací v úložišti zabere pouhých několik milisekund.
- Využíváním SAT solveru pro výpočet balíčkových závislostí. Problém splnitelnosti booleovské formule je dobře prozkoumaný a je k dispozici mnoho kvalitních algoritmů. Jsou relativně rychlé, neboť komplexnost balíčků je velmi nízká v porovnání s ostatními oblastmi využívajícími SAT solvery.
Po několika měsících práce jsou výsledky benchmarku pro současné čtyři verze ZYpp s integrovaným SAT solverem více než povzbudivé, pokud porovnáváme YaST a zypper oproti ostatním správcům balíčků založených na rpm, a to jak z hlediska rychlosti, tak i z hlediska paměťové náročnosti.[11]
Reference
- dokumentace Libzypp[nedostupný zdroj] (anglicky)
- Libzypp projekt - domovská stránka (anglicky)
- Jiný pohled na linuxové balíčkovací systémy (anglicky)
- Michael Schroeder, Historie SAT solverů (anglicky)
- Jan Lomitzki, Řešení problému splnitelnosti booleovské formule[nedostupný zdroj]
- C. Tukker, D. Shuffelton, R. Jhala, S. Lerner, OPIUM: OPtimal Package Install/Uninstall Manager, 29 Mezinárodní konference softwarových inženýrů, 2007 (anglicky)
- EDOS Projekt Zpráva o formálním řešení softwarových závislostí (anglicky)
- D. Le Berre, A. Parrain, SAT technologie pro řešení nezávislostí, ASPL 2008, Limerick, 2008: Mancoosi.org (anglicky)
- D. Burrows, Modelování a řešení softwarových závislostí, červen 2005 (anglicky)
- Minisat.se (anglicky)
- yum a ZYpp rychlost / využití paměti Archivováno 15. 8. 2011 na Wayback Machine (anglicky)