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.
