= Debian Mirror anlegen mit debmirror =

Diese Seite beschreibt die Benutzung des Debian-Paketes '''debmirror''', mit dem ich meinen Debian Mirror aktualisiere. Debmirror hat den Vorteil gegenüber apt-get, dass auch Releases-Dateien übertragen werden und somit die Pakete im Mirror "siginert" sind.

== FTP oder HTTP? ==

Es wäre schön, wenn der Mirror nachher sowohl per ftp als auch per http zugänglich wäre.
Deshalb kann man neben dem Paket '''debmirror''' auch '''wu-ftpd''' installieren. Das 
Homeverzeichnis des FTP-Users muss auf einer Partition sein, die gross genug für den Mirror
ist (Links woandershin sind hier nicht erlaubt, da ftp in einem chroot-Gefängnis lebt).

== Mirror anlegen ==

Zuerst sollte man (als root) mit

  su ftp

zum FTP-User werden. Dann muss man in das 'pub'-Verzeichnis im ftp-home-Verzeichnis gehen. Dort
erzeugen wir die Mirror-Verzeichnisse.

Dann kann man, um auch HTTP-Verbindungen möglich zu machen, einen symbolischen Link in
''/var/www/debian'' auf .../pub/debian (und andere) machen. Der muss dann auch vom User ''www-data''
angelegt sein.

Mit folgenden Befehlen wird ein kompletter Mirror von woody und sarge erzeugt:

  debmirror /var/www/debian-non-US/   --nosource -h ftp.freenet.de      -r debian-non-US/   --method=ftp -p --dist woody/non-US,woody-proposed-updates/non-US,sarge/non-US,sarge-proposed-updates/non-US
  debmirror /var/www/debian/          --nosource -h ftp.freenet.de      -r debian/          --method=ftp -p --dist woody,woody-proposed-updates,sarge,sarge-proposed-updates
  debmirror /var/www/debian-security/ --nosource -h security.debian.org -r debian-security/ --method=ftp -p --dist woody/updates,sarge/updates

Mit neueren Debmirror-Versionen geht auch der Zugriff per HTTP, was eine verkürzte Kommandozeile ermäöglicht:

  debmirror debian --nosource -h ftp.de.debian.org -p --dist sarge,sarge-proposed-updates

Der Vorgang dauert beim ersten Mal mit DSL ca. 10 Stunden. Dieser Mirror ist nun voll funktionsfähig. Viel Spass damit!

* '''TIP:''' wenn ihr ein problem mit der Signatur habt , wie ich! (JensKapitza) hängt mal --ignore-release-gpg an dann klapts auch mit '' dem Nachbarn '' :)


=== Was habe ich da jetzt überhaupt? ===

Damit hat man alle wichtigen Archive im Mirror:

* sarge ist die aktuelle, stabile Debian-Version (stable)
* etch ist die nächste Version in Vorbereitung (testing)
* proposed-updates sind neue Pakete, die in die nächste Revision kommen sollen
* security sind neue Pakete, die sicherheitsrelevant sind. Sie sollten sofort eingepflegt werden

Von Zeit zu Zeit wird von der stable-Distribution eine neue Revision aufgelegt (woody-r1, woody-r2, etc.). Dabei wird nichts grundsätzliches geändert. Es werden lediglich grobe Bugs und vor allem Sicherheitslecks repariert. Wer wirklich neue Pakete haben will, muss zur testing-Distribution greifen. Diese war in der Vergangenheit meist auch sehr stabil und Produktions-tauglich. Für die ganz nagelneuen Pakete gibt es noch die 'unstable'-Distribution ''Sid''. Diese wird mit obigen Zeilen jedoch nicht gespiegelt.

''Warum es ein testing/proposed gibt, ist mir übrigens nicht ganz klar. Schliesslich gibt es von testing ja keine Revisionen, weil es ständig geändert wird. Das Verzeichnis existiert jedoch auf dem Debian-Server, also habe ich es hier mal aufgenommen.''

=== Einschränkungen ===

Wer etwas Platz, Zeit und Bandbreite sparen will, kann sich natürlich auf eine Distribution beschränken. Man kann darüberhinaus jedoch auch noch bestimmte Pakete ausschliessen. Dies geht über die ''--exclude''-Option unter Angabe eines regulären Ausdrucks. So sind z.Zt. ca. 800MB Kernel-Pakete in der Distribution. Um diese zu sparen, kann man sowas wie das folgende angeben:

  debmirror debian/ --nosource -h ftp.bayen.loc -p --dist sarge,sarge-proposed-updates --exclude="kernel-.*" --exclude="pcmcia-modules-.*"

== Mirror aktualisieren ==

Um den Mirror auf den neuesten Stand zu bringen, einfach ein kleines Skript schreiben was die obigen Befehle ausführt. '''debmirror''' erkennt selbständig, welche Dateien nicht geändert sind und lädt nur die neuen dazu. Macht man das z.B. täglich durch einen Cronjob, ist das meistens in ein paar Minuten erledigt.

Dabei ist übrigens darauf zu achten, daß man wirklich die gleichen Befehle benutzt. Wenn man 
nämlich z.B. eine Distribution weniger angibt, wird diese nicht nur nicht aktualisiert, sondern 
auch aus dem Mirror gelöscht! Ich habe mir obige Befehle in ein Skript geschrieben, das ich 
jeweils aufrufe. Wer Teile hat, die nicht so oft aktualisiert werden sollen, sollte diese in 
eigene Verzeichnisse auslagern.

== Mirror benutzen ==

Die Datei ''/etc/apt/sources.list'' sieht auf dem Client dann z.B. so aus:

  deb http://mirrors.bayen.loc/debian woody main contrib non-free
  deb http://mirrors.bayen.loc/debian-non-US woody/non-US main contrib non-free
  deb http://mirrors.bayen.loc/debian woody main contrib non-free
  deb http://mirrors.bayen.loc/debian-non-US woody/non-US main contrib non-free

oder

  deb ftp://mirrors.bayen.loc/pub/debian woody main contrib non-free
  ...