Vlastní mirror repositářů pro Debian a Ubuntu

11. 2. 2011
Doba čtení: 4 minuty

Sdílet

Přemýšleli jste někdy nad tím, proč se ve vaší síti aktualizuje každý počítač zvlášť a stále dokola tak zatěžuje linku stejným software? Existuje řešení v podobě chytrého serveru, který si dokáže balíčky uložit a poskytovat je pak na lokální síti plnou rychlostí. Jak se takový server konfiguruje?

Existuje řada míst, kde se v jedné síti najde víc počítačů s jedním stejným nebo velmi podobným operačním systémem. Ať už to jsou firmy, školy nebo domácnosti, v každém případě by v takové situaci docházelo k duplicitnímu stahování dat a tím zdržování uživatelů a zatěžování linek.

V takové situaci asi napadne každého administrátora: Proč vlastně stahovat při aktualizaci ty balíčky pětkrát (nebo pětsetkrát)? Samozřejmě ho zároveň napadne udělat si místní zrcadlo, ze kterého pak budou koncové stanice stahovat balíčky rychlostí blesku a nebudou vytěžovat linku a servery distributora.

Zrcadlo, zrcadlo, kdo je na světě nejdebianovatější?

Klasické zrcadlo je příjemné v tom, že obsahuje všechny balíky z centrálního repositáře, které by uživatel mohl chtít. Bohužel to ale znamená, že je třeba mu vyhradit 40 GB místa pro každou architekturu a verzi systému. Pokud tedy v síti máme Debian, Ubuntu, Mint, to vše v 32 a 64 bitových verzích a ještě různého stáří, narůstá celková velikost zrcadla do obřích velikostí.

Dalším problémem je, že pak ty stovky gigabajtů dat musíme udržovat, pravidelně se nám tak stahují aktualizace ke všemu, co v repositářích je. Výsledek je pak ten, že uživatelé 80 % těchto balíčků nikdy nevyužijí. Já například používám asi 6 % balíčků z Debianu. Zbytek by na kompletním zrcadle ležel zbytečně.

Keš! Á áá! Saviour of the Universe…

Řešením je kešovací server, který namísto kompletního repositáře se všemi balíky udržuje jen ty soubory, které už předtím některý z klientů stahoval. Server funguje jako proxy a okamžitě vyřizuje všechny požadavky na stažení balíčků, které si navíc ukládá pro pozdější použití. První klient, žádající o konkrétní balíček, jej tak dostává stejnou rychlostí, jako by jej stahoval přímo z internetu. Všichni ostatní pak stahují jen po lokální síti. Výsledkem je menší zátěž na linku i na disky serveru, protože se v nich udržuje jen několik gigabajtů balíčků pro každý repositář. Výhodou také je, že jeden server může obsloužit všechny distribuce používající deb balíčky – Debian, Ubuntu, Mint a další.

Další nespornou výhodou je univerzálnost takové keše. Zatímco klasická lokální zrcadla udržují jen balíčky z předem zvolených serverů, keš umí stáhnout balíčky odkudkoliv. Pokud tak většina uživatelů využívá například repositář Medibuntu, nemusí s tím správce keše nijak předem počítat a vše bude správně fungovat.

Implementací takového serveru je samozřejmě celá řada: dříve byl v Debianu balíček apt-proxy, který je ale s vydáním Squeeze považován za zastaralý. Místo toho můžete využít approx, apt-cacher nebo apt-cacher-ng. Já jsem si vybral poslední zmíněný, protože klasický apt-cacher je podstatně náročnější na systémové zdroje a mimo jiné má v závislostech asi patnáct různých knihoven. Apt-cacher-ng vznikl jako jeho odlehčená náhrada. Umí totéž, ale je výrazně menší a jednodušší.

Já na server, keš na mě

Zprovoznění samotného serveru na síti je velmi jednoduché. Na požadovaném stroji stačí nainstalovat příslušný balíček:

$ sudo aptitude install apt-cacher-ng

Konfigurační soubor najdete v adresáři /etc/apt-cacher-ng/acng.conf. V něm můžete nastavit, do jakého adresáře si bude server ukládat nakešované soubory, kam bude logovat nebo na jakém portu poběží. Je také možno nastavit, po kolika dnech (standardně čtyřech) se z keše smaže soubor, na který už neodkazuje žádný index soubor na serverech. Tyto hodnoty můžete s klidem nechat v přednastave­ném stavu.

Já jsem měl při prvním nastavování serveru problém se zapnutým remapingem repositářů. Ten umí upravovat cesty dle požadavků admina serverů. Bohužel v předinstalovaném konfiguračním souboru mi příklady rozbíjely cesty a nefungovalo to. Doporučuji proto příslušnou pasáž v souboru zakomentovat.

Teď ještě zbývá nastavit klienty, aby proxy využívali. Existují dvě možnosti: buďto můžete změnit URL všech repositářů, nebo stačí na jednom místě zapnout využívání proxy. Zvolil jsem pohodlnější druhou možnost. V adresáři /etc/apt/apt.conf.d/ stačí vytvořit soubor 01proxy (nebo podobně) a do něj zapsat:

Acquire::http { Proxy "http://192.168.1.107:3142"; };

IP adresu samozřejmě upravte, port je standardně nastaven na 3142. Pokud používáte Synaptic, upravte si jeho nastavení. Stačí navštívit Nastavení → Nastavení → Síť a zapnout proxy.

Použití a statistiky

Od této chvíle stačí normálně používat balíčkovací systém tak, jak jsme zvyklí. Vše by mělo normálně fungovat, při stahování balíčků byste si měli jen všimnout, že se stahují z lokálního serveru plnou rychlostí sítě.

Apt-cacher-ng má ještě další zajímavou vlastnost – umožňuje přes webové rozhraní nastavovat několik drobností, ale především zobrazovat statistiky o svém provozu. Do webového prohlížeče stačí zadat IP adresu serveru s příslušným portem (3142). Dozvíte se, jak máte nastavit klientské stanice a na konci výpisu narazíte na odkaz na statistiky.

ict ve školství 24

Ten standardně vede na acng-report.html, kde si můžete nechat spočítat, jak úspěšný server je, kolik požadavků obsloužil z keše a kolik vám ušetřil dat na lince. Navíc zde můžete nastavovat detaily chování expirace balíčků či naimportovat balíčky z jiných systémových adresářů. Toto rozhraní je možné chránit heslem, které zapíšete do souboru  /etc/apt-cacher-ng/security.conf.

Jednoduché a funkční

Výhodou tohoto přístupu je, že je naprosto nenáročný a přitom je velmi efektivní. Instalace serveru trvá pár minut a kromě méně zatížené linky získáte také nadšené uživatele, kterým aktualizace pojedou jako po másle. Mít vlastní apt kešovací server se vyplatí už při dvou počítačích v jedné domácnosti, které používají stejný systém. Tedy za předpokladu, že vám doma běží nějaký ten servřík. Pro firmy a školy je to naprostá nezbytnost.

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.