Monthly Archives: February 2011

Ubuntu mirror mit debmirror

Manchmal ist es sehr hilfreich wenn man einen eigenen Ubuntu mirror im Netzwerk hat. Mit dem Programm debmirror ist das auch nicht mehr schwierig und ist in ein paar Schritten erledigt. Bei ubuntuusers.de ist so gut wie alles beschrieben, aber leider fehlt das die GPG keys als “trusted” hinzugefügt werden müssen.

Fangen wir also an den User und die Gruppe anzulegen und wechseln zu dem User:

sudo bash
aptitude install debmirror ubuntu-keyring
groupadd mirror
useradd -g mirror  -c “Ubuntu Mirror” mirror
su – mirror
mkdir -p ~/scripts ~/ubuntu ~/ubuntu-security ~/ubuntu-updates
cd ~/scripts

Jetzt können wir die Scripte erstellen die zum aktualisieren des Mirrors verantworlich sind. Es ist möglich sie von ubuntuusers.de zu nehmen und muss nur den Pfad des Mirrors ändern. Zum Beispiel:

#!/bin/bash
#
# Spiegelt die Haupt-Ubuntu-Repostiories
#
logger -t mirror-ubuntu.bash[$$] Updating Ubuntu
debmirror /home/mirror/ubuntu –passive –progress –nosource \
–host=ftp.inf.tu-dresden.de –root=os/linux/dists/ubuntu
–dist=hardy,lucid \
–section=multiverse,universe,restricted,main –arch=amd64 –cleanup
\
–verbose
logger -t mirror-ubuntu.bash[$$] Finished Updating Ubuntu

Bei dem oben beschriebenen Script wird ein mirror für hardy und lucid erstellt. Die Architektur ist 64bit (amd64). Es ist also nicht nötig für jeden Release ein Mirror zu erstellen. Falls man einen eigenen dns eintrag für den Mirror erstellen möchte reicht eine sehr einfache apache Konfiguration:

NameVirtualHost mirror.example.org:80
<VirtualHost mirror.example.org:80>

DocumentRoot /home/mirror/
ServerName mirror.example.org

Alias /mirror/ “/home/mirror/”

<Directory “/home/mirror/”>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>

</VirtualHost>

Als user mirror müssen wir noch den GPG keyring als trustedkeys einbinden. Ansonsten können wir den Mirror nicht updaten.

gpg –no-default-keyring –keyring trustedkeys.gpg –import /usr/share/keyrings/ubuntu-archive-keyring.gpg

Zum Schluss tragen wir noch ein paar cronjobs (user: mirror) ein und der Mirror wird jede Nacht aktualisiert.

crontab -e

und fügen folgendes hinzu:

0 1 * * * bash -l -c “/home/mirror/scripts/mirror-ubuntu.bash”

Das war es auch schon. Zum testen und initialisieren des Mirros lohnt es sich das Script einmal per Hand auszuführen.

Der /etc/apt/sources.list des Clients kann dann zum Beispiel wie folgt aktualisiert werden:

deb http://mirror.example.org/mirror/ubuntu lucid universe multiverse main restricted

Fertig. Pro Mirror können schon mehr als 60GB zusammen kommen. Also Vorsichtig!