ZYpp

Z Wikipedie, otevřené encyklopedie
ZYpp
Aktuální verze17.32.0 (22. března 2024)
Operační systémLinux
Vyvíjeno vC++
Typ softwaruBalíčkovací systém
LicenceGNU GPL
WebLibZYpp Portal (anglicky)
Některá data mohou pocházet z datové položky.

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ší.

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[editovat | editovat zdroj]

Cíle[editovat | editovat zdroj]

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[editovat | editovat zdroj]

Ř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[editovat | editovat zdroj]

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]

Související články[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

  1. dokumentace Libzypp[nedostupný zdroj] (anglicky)
  2. Libzypp projekt - domovská stránka (anglicky)
  3. Jiný pohled na linuxové balíčkovací systémy (anglicky)
  4. Michael Schroeder, Historie SAT solverů (anglicky)
  5. Jan Lomitzki, Řešení problému splnitelnosti booleovské formule[nedostupný zdroj]
  6. 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)
  7. EDOS Projekt Zpráva o formálním řešení softwarových závislostí (anglicky)
  8. D. Le Berre, A. Parrain, SAT technologie pro řešení nezávislostí, ASPL 2008, Limerick, 2008: Mancoosi.org (anglicky)
  9. D. Burrows, Modelování a řešení softwarových závislostí, červen 2005 (anglicky)
  10. Minisat.se (anglicky)
  11. yum a ZYpp rychlost / využití paměti Archivováno 15. 8. 2011 na Wayback Machine. (anglicky)

Externí odkazy[editovat | editovat zdroj]