Jak si vytvořit lokální repozitář pro Mandriva Linux

Máte doma více počítačů s Mandriva Linuxem? Přinášíme vám návod na tvorbu lokálního repozitáře: na lokální disk v místní síti budete synchronizovat vzdálený repozitář. Pokud budete postupovat dle našeho návodu, budete mít rychlejší přístup k balíčkům ze všech počítačů v místní síti a menší provoz po vnější síti. Zvláště u velkých firem či škol se jedná skoro o nutný postup, ale vyplatí se již při třech počítačích.

Příprava pro spuštění serveru:

Prvně je nutné nastavit a spustit FTP server na vašem Mandriva Linuxu. Nebojte, není to nic obtížného, ukážeme vám, jak na to v několika málo krocích.

  • Nainstalujte si balíčky anonftp, mc a rsync pomocí správce softwaru.
  • Otevřete si Ovládací centrum Mandriva Linuxu, zvolte položku Bezpečnost a vyberte Nastavit váš osobní firewall.
  • Zde zatrhněte Server FTP a klepněte na OK. V dalším okně uvidíte přehled všech povolených služeb, které se vám budou oznamovat. Po klepnutí na OK již jen vyberte, které síťové rozhraní by mělo být chráněno.

Pamatujte, že nezatržení některého znamená, že jsou všechny služby na tomto rozhraní zakázány!

  • Jako uživatel root vytvořte adresář /var/ftp. Pozor, diskový oddíl, na kterém bude adresář /var/ftp musí mít aspoň 25 GiB volného místa, lepší je ovšem více!
  • V Ovládacím centru otevřete část Systém|Spouštět a zastavovat systémové služby. Přesvědčte se, že služba wu-ftpd je zatržená, aby se spouštěla při startu, resp. na žádost.
  • Restartujte počítač.

Hotovo, vše máte připraveno pro vytvoření a spuštění lokálního zrcadla oficiálního zdroje softwaru. Pokud si chcete ověřit, že vše funguje, jak má, zadejte do internetového prohlížeče v počítači lokální adresu:

ftp://ip.adresa.počítače.s_repozitářem

Tu zjistíte například podržením kurzoru nad ikonou připojení (na ploše serveru).

První zrcadlení z Internetu

Pro zrcadlení se zdá být nejlepší nástroj rsync. Je to program pro přenášení dat s tím, že umí rozpoznat, je-li část souboru přenesená, případně jsou-li části souborů již přeneseny – v některých případech to šetří množství přenesených bajtů, a je tedy i rychlejší.

Příkaz pro synchronizaci lokálního a vzdáleného serveru pro verzi 2010.1 a 32bitovou architekturu je následující:

rsync -ra --delete rsync://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2010.1/i586/ /var/ftp/

Nezapomeňte, že máte-li jiné nastavení, tak se bude lišit i adresa v příkazu. Krom jiné verze Mandriva Linuxu (2010.0, 2009.1, 2009.0…) to může být i 64bitová architektura, kde se poté změní i586 na x86_64.

Abyste viděli, co zrovna přenášíte, připište k parametrům -ra i parametr -v, tedy –avr. Prvotní synchronizaci nechejte běžet například přes noc, protože přenášíte velké množství dat, tak ať vás nepřekvapí, že se několik hodin zdánlivě nic neděje! Při této příležitosti znovu upozorňujeme, že je třeba mít dostatek místa na diskovém oddíle s adresářem /var/ftp.

Automatická aktualizace lokálního repozitáře

Máte-li přenesena data na lokální oddíl disku, tak nyní stačí nastavit, aby se synchronizace serveru prováděla automaticky. K tomu je vhodné použít nástroj Cron – aplikace, která v nastavený čas spustí příkaz.

Jako superuživatel napište:

EDITOR=mcedit crontab -e

Do editoru napište:

0 * * * * rsync -ra --delete rsync://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2010.1/i586/ /var/ftp

Aby se každou hodinu kontroloval obsah. Pokud byste rádi kontrolu prováděli jednou denně (řekněme v sedm hodin ráno), bude začátek vypadat následovně:

0 7 * * * rsync -ra --delete rsync://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2010.1/i586/ /var/ftp

Editor uložte (klávesou F2) a ukončete (klávesa F10). Nyní se bude vše automaticky synchronizovat ve stanovený čas.

Pro další informace o formátování se podívejte například na stránku české wikipedie k programu Cron.

Přidání lokálního repozitáře do Mandriva Linuxu:

Máme-li vytvořen lokální zdroj softwaru, je jednoduché jej přidat do operačního systému Mandriva Linuxu. Stačí znát IP adresu počítače, kde se repozitář nachází a napsat jako root do terminálu:

urpmi.addmedia --distrib ftp://ip.adresa.pocitace.s_repozitarem

Doporučujeme předtím odstranit všechny dřívější oficiální repozitáře, jinak budete balíčky stahovat z Internetu.

Podobným způsobem můžete zrcadlit i například zdroje PLF, jen je třeba upravit cestu v příkazu rsync a nezapomenout přidat příkaz i do nástroje Cron.

10 komentářů

  1. Leinad | 31.08.2010 | 21:42 | Odpovědět

    Skvělý článek! Netušil jsem, že to je až tak jednoduché. Bál jsem se, co budu dělat, kdybych se náhodou rozhodl používat openSUSE po ukončení podpory, kdy bohužel jsou smazány repozitáře se softwarem. A ono by to při nejhorším (pokud bych nenašel archivní mirror) šlo takto zazálohovat.

    1. Peťoš Šafařík | 31.08.2010 | 21:52 | Odpovědět

      Díky, pochvala moc potěší 🙂
      openSUSE nepoužívám, ale v případě Mandriva Linuxu se repozitáře nemažou a jsou na mirrorech stále i po ukončení podpory.

  2. alda81 | 31.08.2010 | 22:36 | Odpovědět

    Peťoší, díky za rozšíření obzor, v budoucnu to určitě odzkouším.

    1. Peťoš Šafařík | 31.08.2010 | 23:46 | Odpovědět

      Děkuji za pochvalu 🙂
      Pomalu připravuji článek pro řízení N počítačů pomocí urpmi –paralel 🙂 Stačí jeden komp a máte pořádek ve firmě o 1000 kompech 🙂

      1. joelp | 05.09.2010 | 18:51 | Odpovědět

        Tak na to se už těším 🙂

  3. multi | 17.09.2010 | 15:52 | Odpovědět

    doporucuju pri rsyncu vydechat jeste nektere nepouzivane balicky, usetrito trochu mista

    dane baclisky nastavuji ve s vem skriptu takto a pak staci k rysuncu pripsat s dolarem promenne EXCLUDE

    MRdir=”media/main/release/”
    MUdir=”media/main/updates/”
    CRdir=”media/contrib/release/”
    CUdir=”media/contrib/updates/”
    NRdir=”media/non-free/release/”

    MU=(kernel-linus* kernel-rt* hcfpcimodem-kernel* hsfmodem-kernel* hso-kernel* iscsitarget-kernel* vhba-kernel*)

    #zbytecne kernely
    EXCLUDE1=”–exclude=${CRdir}kernel-linus* –exclude=${CRdir}kernel-rt* –exclude=${CUdir}kernel-linus* –exclude=${CUdir}kernel-rt* –exclude=${MUdir}hcfpcimodem-kernel* –exclude=${NRdir}hcfpcimodem-kernel* –exclude=${MUdir}hsfmodem-kernel* –exclude=${NRdir}hsfmodem-kernel* –exclude=${CRdir}hso-kernel* –exclude=${MUdir}hso-kernel* –exclude=${CRdir}vhba-kernel* –exclude=${MUdir}vhba-kernel* –exclude=${CUdir}kernel-xen* –exclude=${MRdir}em8300-kernel* –exclude=${MUdir}em8300-kernel* –exclude=${CRdir}et131x-kernel* –exclude=${MUdir}et131x-kernel* –exclude=${CRdir}kernel-tmb* –exclude=${CUdir}kernel-tmb* ”

    #nepouzivane balicky
    EXCLUDE2=”–exclude=${NRdir}fcdsl-kernel* –exclude=${MUdir}fcdsl-kernel* –exclude=${MUdir}fcdsl2-kernel* –exclude=${MUdir}fcdslsl-kernel* –exclude=${MUdir}fcdslslusb-kernel* –exclude=${MUdir}fcdslusb-kernel* –exclude=${MUdir}fcdslusb2-kernel* –exclude=${CRdir}asterisk* –exclude=${CUdir}asterisk* –exclude=${MRdir}*xen* –exclude=${MUdir}*xen* ”

    #testovaci atd balicky
    EXCLUDEnonstable=” –exclude=media/debug_contrib –exclude=media/debug_main –exclude=media/debug_non-free –exclude=media/main/backports –exclude=media/main/testing –exclude=media/contrib/backports –exclude=media/contrib/testing –exclude=media/non-free/backports –exclude=media/non-free/testing “

    1. Peťoš Šafařík | 17.09.2010 | 16:11 | Odpovědět

      Myšlenka asi dobrá (máš za ni velké plus), ale proboha, aspoň si to po sobě přečti, než to pošleš!!!

  4. Palo | 21.09.2010 | 12:18 | Odpovědět

    Dakujem za zaujimavy clanok.
    Nieco podobne som uz zvazoval, no kym som sa preluskal roznymi navodmi, vysiel tvoj clanok a velmi mi pomohol.
    Na druhej strane, ja by som chcel trochu ine riesenie. Neviem, ci je to technicky realizovatelne, tak ta prosim, ci by si sa k tomu mohol vyjadrit.
    Spravujem len dva stroje, no aj tak ma hneva, ze kazdy stroj si stahuje aktualizaciu nanovo. No nechcem vytvarat zrkadlo. Skor by som chcel prinutit Mandrivu, aby pri aktualizacii vytvorila aj lokalnu kopiu balicku do specialneho adresara, ktory bude lokalnym zdrojom SW pre domacu siet (s najvyssou prioritou (?)).
    Vopred dakujem za rady.

    1. l_barbarossa | 04.10.2010 | 21:23 | Odpovědět

      balicky sa stahuju do /var/cache/urpmi/rpms

      defaultne sa po uspesnej instalacii odstrania
      – mozes ale pouzivat s urpmi prepinac –noclean (je dostupny aj z grafickeho rpmdrake) , aby zostavali v cache

      – hadam sa tento prepinac da nastavit aj globalne v urpmi.cfg

      ja mam pre /var/cache/urpmi/rpms samostatnu particiu (mount point alebo link) a takto mi to vyhovuje

  5. madmucho | 24.10.2010 | 08:57 | Odpovědět

    Super, lokalní repo se hodí když děláte, nebo připravujete update serveru na novjejší verzi distribuce a nechcete u toho strávit spoustu času koukáním na stav stahovaní balíčků.

Leave a comment

Sorry, you must be logged in to post a comment. Login