Hlavní navigace

Gentoo a GPRS (3): Méně je někdy více

7. 10. 2005
Doba čtení: 4 minuty

Sdílet

V dnešní závěrečné části se podíváme na běžný provoz již nainstalovaného Gentoo a zaměříme se zejména na datové úspory. Ukážeme si, že strom portage lze synchronizovat ještě úsporněji, než umožňuje rsync, nebo že nový Firefox automaticky neznamená stáhnutí 32 MB.

Pokud se člověk rozhodne provozovat Gentoo na pomalejší lince, první rozčarování na sebe zpravidla nenechá dlouho čekat. I při každodenní synchronizaci stromu portage pomocí emerge –sync je potřeba stáhnout asi 3.5 MB dat a vlastní aktualizace, o které u distribuce typu „rolling-updates“ není nouze, jsou na tom ještě hůře. Stahovat např. celý Firefox, jehož zdrojové kódy zabírají cca 32 MB, se asi nikomu nechce. Firefox v binární podobě přeložený v mozilla.org má sice jen necelých 8 MB, ale ani to není ideální a „řeší“ to jen jeden konkrétní program. Celá situace je o to nepříjemnější, když si uvědomíme, že v celé řadě Firefoxu 1.0.x jsou pouze bezpečnostní aktualizace, které nejsou nikterak velké. Řešení se přitom samo doslova vnucuje – patche! Celý problém si naštěstí uvědomili i lidé, kteří s tím chtěli a byli schopni i něco udělat, a tak vznikl projekt Dynamic deltup server network.

Dynamic deltup server network

Jak již u podobných projektů bývá, jeho myšlenka je velmi jednoduchá a krom instalace neklade žádné další nároky na obsluhu. Za normálních okolností si balíčkovací systém během instalace prověří, zdali má vše potřebné k dispozici v požadované verzi, a pokud ano, provede instalaci. Pokud ne, tak prvně provede stažení požadovaných věcí a až pak pokračuje v instalaci.

Delta v tomto procesu nahrazuje prosté stažení poněkud sofistikovanějším způsobem. Klientská část přebere od balíčkovacího systému požadavek na stažení softwaru v konkrétní verzi a podívá se do archivu již dříve staženého softwaru, zda se tam náhodou již tentýž software v jiné verzi nevyskytuje. Pokud ano, vybere tu nejvhodnější verzi a zašle deltup serveru požadavek na patch z verze, která je k dispozici, na verzi požadovanou. Server tento požadavek přebere, a pokud má patch k dispozici, tak jej obratem poskytne. Pokud jej k dispozici nemá a má k dispozici obě verze požadovaného softwaru, tak patch vytvoří. V případě, že požadované verze nemá, také ještě není nic ztraceno. Pokud se nejedná o opravdu exotický, ne příliš používaný software, stáhne jej a znovu patch vytvoří. Pomocí takto získaného patche a již dříve stažené verze pak klientská část vytvoří tentýž soubor, který by balíčkovací systém stahoval přímo. Kontrolní součet samozřejmě také odpovídá.

Pokud není lokálně žádná jiná verze požadovaného software k dispozici, musí se pochopitelně stáhnout celá a delta přichází na řadu až při dalších aktualizacích.

V následujících dvou tabulkách jsou uvedeny velikosti patchů mezi jednotlivými verzemi Firefoxu a kernelu. Kompletní statistiky pro jednotlivé programy je možno zhlédnout na stránce projektu.

Velikost patchů pro Firefox
Velikost Rozdíl mezi verzemi Velikost patche proti předchozí verzi Velikost patche proti verzi 1.0.2
Firefox kB kB kB kB
1.0.2 31992,26
1.0.3 32015,92 23,66 143,93 143,93
1.0.4 31988,86  –27,06 174,87 194,41
1.0.5 32018,54 29,68 462,21 480,74
1.0.6 32014,49  –4,05 131,32 484,67
Velikost patchů pro kernel
Velikost Rozdíl mezi verzemi Velikost delta patche proti předchozí verzi Velikost bz2 patche z kernel.org proti předchozí verzi
Jádro kB kB kB kB
2.6.11 36206,72
2.6.12 36632,39 425,67 2416,64 4608
2.6.13 37473,37 840,98 2621,44 4915,2

Jak je vidět z tabulek, u bezpečnostních aktualizací Firefoxu jsou úspory opravdu značné a dosahují hodnoty přes 99 %. U aktualizací jádra, kde se projevují i nové vlastnosti, se úspory pohybují kolem 93 %. Celkové průměrné úspory se v praxi pohybují kolem 90 %.

Instalace

Vlastní instalace je velice jednoduchá. Stačí pro danou architekturu, v tomto případě x86, odmaskovat následující ebuildy a nainstalovat getdelta plus pár věcí v závislostech.

$ echo "app-portage/getdelta ~x86" >> /etc/portage/package.keywords
$ echo "dev-util/bdelta ~x86" >> /etc/portage/package.keywords
$ echo "app-portage/deltup ~x86" >> /etc/portage/package.keywords

$ emerge -a getdelta 

Nyní je ještě zapotřebí editovat /etc/make.conf a přenastavit FETCHCOMMAND do následující podoby:

FETCHCOMMAND="/usr/bin/getdelta.sh \${URI}" 

Tím je instalace getdelta dokončená a při instalaci prostřednictvím emerge již bude veškerý software automaticky stahován výše popsaným způsobem.

Možná si ještě pamatujete, že před započetím instalace Gentoo bylo zapotřebí stáhnout archiv aktuálního stromu portage. Tento archiv je automaticky generován každý den, a tak se i zde přímo nabízí použít deltu i na synchronizování portage stromu. K tomu bude zapotřebí doinstalovat balík emerge-delta-webrsync.

$ emerge emerge-delta-webrsync 

Po nainstalováni se pak aktualizace portage stromu provádí příkazem.

$ emerge-delta-webrsync 

Běžný každodenní emerge –sync stáhne asi 3.5 MB. U emerge-delta-webrsync  je to průměrně 100 kB za den. Za tuto značnou datovou úsporou ovšem zaplatíme drobnou neaktuálností portage stromu, která je způsobená vytvářením patchů mezi archivy generovanými jednou denně. Rovněž zde nefunguje značná dynamičnost, jako tomu je u běžných balíčků. Zde se již patche nevytvářejí na objednávku od poslední synchronizace, ale pouze mezi dvěma po sobě jdoucími dny. Jestliže tedy aktualizaci provedete po týdnu, bude nejprve staženo všech sedm patchů.

Závěrem

Instalace Gentoo není zrovna příjemnou záležitostí a bohužel, krom stažení požadovaných věcí na počítači s rychlejším připojeném, se s tím nedá nic udělat. Oproti tomu vlastní provoz není nijak zvlášť problémový. Díky dynamic deltup server network je zapotřebí stahovat pouze zlomek skutečně požadovaných dat, o čemž se můžete přesvědčit ve statistikách projektu. Jednou za čas se sice najde nějaký software, který je zapotřebí stáhnout celý znovu, ale naštěstí se to nestává často. Povětšinou jsou to věci jako např. Java od Sunu, NeroLinux apod., tedy takové, které z licenčních důvodů nejsou ani na mirrorech Gentoo, nebo např. Adobe Reader, který je použit v podobě RPM balíčku, s nímž si zas neporadí delta. Tyhle věci se však neaktualizují příliš často, a tak celkově přenášené objemy nikterak dramaticky nezatěžují ani velmi pomalou linku. Navíc distribuce je neustále aktuální. Odpadá tak potřeba jednou za čas shánět aktuální verzi jiné distribuce.

Seriál: Gentoo a GPRS

Byl pro vás článek přínosný?

Autor článku

Autor pracuje ve společnosti spravující počítačové sítě a používá Gentoo. Má rád otevřená řešení a pořádek v systému.