Lokální mirror snadno a rychle

myšák Únor 20th, 2007

Pokud spravujete počítačovou síť, ve které máte vícero počítačů s nějakou “Debian like” distribucí, možná vám přijde vhod vychytávka v podání aplikace debmirror. Tato aplikace na základě zadaných parametrů (ať už v příkazovém řádku nebo ve skriptu) dokáže velice jednoduše udržovat na vašem počítači/serveru lokální mirror balíčků vaší distribuce tak, aby ostatní počítače v síti nezatěžovali internetový provoz nýbrž tahali pro sebe balíčky z lokálního repozitáře.

Co tedy musíte k zprovoznění vašeho mirroru udělat? Stačí několik málo kroků s plné spokojenosti:

1) Mít nainstalovaný lokální ftp server ( výběr nechám na vás, k dispozici je jich spousta. Osobně upřednostňuji vsftpd )
2) Nainstalovat aplikaci debmirror
3) Udělat si dle vlastního uvážení malý skriptík, ketrý bude debmirror spouštět a šoupnout jej do cronu, aby se zajistila každodenní údržba lokálního repositáře.

ad 2) Debmirror nainstalujete kupodivu :-) pomocí příkazu apt-get install debmirror, po kterémžto se vám v adresář /usr/bin objeví spustitelný program stejného názvu, jako zmíněná aplikace.

ad 3) Pro použití ve své síti jsem si sbastlil dle návodů na webu následující skriptík:

#! /bin/sh
# Skript pro udrzovani lokalniho mirroru Ubuntu

# Promenne
LOCAL_DIR=/mnt/REPO/dists/ # lokalni adresar
REMOTE_DIR=ubuntu/ # vzdaleny adresar
HOST=cz.archive.ubuntu.com # synchronizovany mirror
METHOD=http # pouzity protokol
DISTS=dapper # verze k synchronizaci
ARCHS=i386 # architektury
SECTIONS=main,restricted,universe,multiverse # sekce

ERRLOG=/mnt/REPO/debmirror.log # error-log

# Kontrola existence predchoziho error-logu
if [ -f $ERRLOG ]; then savelog $ERRLOG; fi

# Kontrola, jestli existuje adresar, kam se bude sypat lokalni mirror
if [ ! -d $LOCAL_DIR ]; then
echo "Adresar: $LOCAL_DIR neexistuje. Koncim."
exit 1
fi

# Kontrola jestli nahodou nevisi nekde nejaky zombik...
if [ $(ps ax | grep /usr/bin/debmirror | wc -l) = 1 ]; then
debmirror --nosource -m --passive --host=$HOST --root=$REMOTE_DIR --method=$METHOD --progress --dist=$DISTS --section=$SECTIONS --arch=$ARCHS --getcontents --ignore-missing-release --ignore-release-gpg $LOCAL_DIR | tee $ERRLOG
fi

#end of file

*) Celý příkaz debmirror je na jednom řádku.

Pak už stačí jen umístit výše uvedený skriptík do adresáře /etc/cron.daily, popř. do jiného dle vlastních představ a ostatním stanicím v lokální síti nastavit v /etc/apt/sources.list repositáře na váš lokální mirror.

Trackback URI | RSS/Komentáře

Vložit komentář

Pro vložení komentáře se musíte přihlásit.