LinuxMirror
Introductie
Bij de meeste Linux distributies heb je de mogelijkheid om de installatie via het netwerk te laten verlopen. Je downloadt een minimale CD waarmee je je machine boot en de installer haalt vervolgens de benodigde packages op via het netwerk (HTTP, FTP, NFS etc). Hiermee bespaar je bandbreedte, packages die je niet gebruikt hoef je immers ook niet te downloaden. Ook hoef je met deze methode maar 1 CD te branden, of je kan zelfs via het netwerk of USB booten.
In sommige gevallen is het echter makkelijk om op je eigen LAN een mirror op te zetten, je kan dan de installatiebestanden van een eigen server halen, dit gaat in de meeste gevallen vele malen sneller dan een publieke server. Het gebruik van een lokale mirror is ook aan te raden als je een groot aantal hosts hebt die deze bestanden nodig hebben.
Op deze pagina wordt verteld hoe je je eigen Linux Installatie Mirror opzet.
Debian Based distributies
In het Debian project wordt in veel gevallen gebruik gemaakt van de tool debmirror, dit is een programma dat speciaal geschreven is een Debian mirror aan te maken.
debmirror installeren
Ten eerste moet je de package debmirror installeren. Dit kan bijvoorbeeld met het onderstaande commando:
# apt-get install debmirror
of (onder Ubuntu)
$ sudo apt-get install debmirror
Debian
Maak een plek aan waar de mirror komt te staan:
mkdir -p /opt/mirror/debian
Gebruik vervolgens dit commando om de mirror aan te maken:
debmirror -a i386 --nosource -s main -h ftp.nl.debian.org -d etch -r /debian --progress -e ftp --ignore-release-gpg /opt/mirror/debian
Ubuntu
Maak een plek aan waar de mirror komt te staan:
mkdir -p /opt/mirror/debian
Gebruik vervolgens dit commando om de mirror aan te maken:
debmirror -a i386 --nosource -s main -h de.archive.ubuntu.com -d feisty -r /ubuntu --progress -e http --ignore-release-gpg /opt/mirror/ubuntu
Debmirror automatiseren
Bovenstaande commando's komen uit het volgende script, en dat script kan je gebruiken om automatisch de mirror te laten updaten:
etch.sh
Maak een bestand aan met de naam etch.sh"
vi /opt/mirror/etch.sh
Plak daarin de volgende tekst:
#!/bin/bash arch=i386 section=main release=etch proto=http server=ftp.nl.debian.org inPath=/debian outPath=/opt/mirror/debian # Start script # debmirror -a $arch \ --nosource \ -s $section \ -h $server \ -d $release \ -r $inPath \ --progress \ -e $proto \ --ignore-release-gpg \ $outPath
Zorg er voor dat het script executable is:
chmod +x /opt/mirror/etch.sh
Als je nu het volgende command draait zal je je mirror updaten:
/opt/mirror/etch.sh
Dit kan je vervolgens via een cron job automatisch laten doen... :)
feisty.sh
Maak een bestand aan met de naam feisty.sh"
vi /opt/mirror/feisty.sh
Plak daarin de volgende tekst:
#!/bin/bash arch=i386 section=main release=feisty server=de.archive.ubuntu.com inPath=/ubuntu proto=http outPath=/opt/mirror/ubuntu debmirror -a $arch \ --nosource \ -s $section \ -h $server \ -d $release \ -r $inPath \ --progress \ -e $proto \ --ignore-release-gpg \ $outPath
Zorg er voor dat het script executable is:
chmod +x /opt/mirror/feisty.sh
Als je nu het volgende command draait zal je je mirror updaten:
/opt/mirror/feisty.sh
Dit kan je vervolgens via een cron job automatisch laten doen... :)
RPM Based Distributies
Met het volgende commando haal je een RPM Mirror naar je toe, in dit geval van CentOS 5.0 ...
wget -r -c -t0 -l0 --retr-symlinks -np ftp://ftp.belnet.be/packages/centos/5.0/os/i386/
Het aanbieden van je mirror
Om je mirror te kunnen gebruiken moet hij wel worden aangeboden via een van de protocollen die de Linux installers gebruiken. De keuze voor het HTTP protocol ligt daarbij voor de hand, het is een bekend protocol, veel gebruikt voor deze toepassing, heeft minder problemen met firewalls dan bijvoorbeeld FTP en is stukken veiliger dan NFS.
We gaan dus een HTTP server opzetten die deze pagina's serveert:
# apt-get install -y apache2 # cd /var/www # ln -s /opt/mirror/ mirror
Je mirrors zijn nu via HTTP beschikbaar op http://<ip-of-hostname>/mirror/ , als je er met je browser naartoe surft zie je als het goed is alle directories die in /opt/mirror staan. :)