Debmirror

Inhaltsverzeichnis

Installation

Linux (Debian)

Die Installation erfolgt mit

apt-get install debmirror

bzw.

aptitude install debmirror

Beschreibung

debmirror arbeitet mit Hilfe verschiedener Übertragungsprotokolle (rsync, http, ftp). Dabei kann man Plattformen (z.B. i386, amd64) und Distributionen (z.B. etch, lenny) angeben. Dabei wird die spezielle Debian-Paketstruktur (dists mit den Paketbeschreibungsdateien, pool mit den eigentlichen Debian-Paketen) runtergeladen. Bei fehlenden Daten auf dem Zielverzeichnis, z.B. beim erstmaligen Aufruf, werden die benötigten Dateien einfach ermittelt und runtergeladen, später synchronisiert er, d.h. veraltete (=nicht mehr vorhandene) deb-Dateien werden vom lokalen Mirror entfernt, neue runtergeladen. Dabei arbeitet das rsync-Protokoll am effektivsten, es funktioniert jedoch notfalls auch mit der http-Methode.

Konfiguration

Am besten wäre die Integration in ein Shell-Skript, mit einem Cron-Job kann man den Mirror dann regelmäßig aktuell halten. Der Aufruf erfolgt mit:

debmirror (Zielpfad) (--progress) --method=(rsync|http|ftp) (--nosource) (--pdiff=none) --host=(Server) --root=(Verzeichnis|rsync-Modul) \
--dist=(distri1,...,distriN) --section=(Sektionen) --arch=(Architekturen) (--ignore=(Verzeichnis)) --cleanup (--passive) (--ignore-release-gpg) (-v)

--progress - Verarbeitungsinformationen beim Runterladen anzeigen
--method - Downloadmethode. Mögliche Werte sind rsync, http oder ftp
--nosource - Lädt Sourcepakete (für deb-src-Quellen) nicht runter
--pdiff=none - Lädt nicht die diff-Paketlistendateien runter, sondern orientiert sich ausschließlich an großer Release-/Packages-Datei
--host - Server, von dem man laden will
--root - Verzeichnis auf dem Server, wo sich die dists/pool-Verzeichnisse befinden bzw. das rsync-Modul
--dist - gewünschten Distributionen (z.B. etch,lenny)
--section - gewünschte Sektionen (z.B. main,contrib,non-free)
--arch - Architekturen (z.B. i386,amd64)
--ignore - Verzeichnisse auf dem lokalen Spiegel, die relativ mit der Zeichenkette übereinstimmt, nicht beachten. D.h. auch nicht löschen, wenn nicht auf dem Server vorhanden
--cleanup - unbekannte Dateien und Verzeichnisse auf dem Spiegel aufräumen. Ggf. eingeschränkt durch --ignore
--passive - im passiven Modus runterladen (notwendig bei stateless Firewall)
--ignore-release-gpg - ignoriert GPG-Prüfung durch Release.gpg-Datei vom Server
-v - Verarbeitungsinfos zwischen Dateidownloads anzeigen


Konfigurationsbeispiel für Debian-Distribution

Mirror

Hauptrepository

Unter der Annahme, der Spiegel wird im Verzeichnis /var/www/mirror/debian abgelegt:

debmirror /var/www/mirror/debian --progress --method=rsync --nosource --host=ftp.de.debian.org --root=:debian/ --dist=etch,lenny \
--section=main,contrib,non-free --arch=i386,amd64 --ignore=/i18n/ --cleanup --passive --ignore-release-gpg -v

Dabei werden die Debian-Distributionen mit den Sektionen main, contrib und non-free und den Architekturen i386, amd64 und natürlich die Pakete mit -all.deb per rsync runtergeladen. Der GPG-Signaturtest wird übersprungen (für die erfolgreiche Verifikation muß man im Vorfeld einmalige Importarbeiten durchführen, was ich demnächst beschreiben werde). Dabei soll das Verzeichnis i18n unangetastet lassen, und das hat folgende Bewandnis:

Seit einiger Zeit gibt es die Möglichkeit, mittels i18n-Verzeichnissen unterhalb der jeweiligen Sektionsverzeichnisse im dists-Verzeichnis lokale Sprachdateien für die Paketlisten in aptitude abzulegen. Einzelne Paketbeschreibungen werden dann in der eigenen Landessprache angezeigt, wenn vorhanden. debmirror unterstützt jedoch diese Methode noch nicht, deshalb muß man debmirror die Verarbeitung von Dateien unterhalb dieses Verzeichnisses verbieten.

Allerdings will man in dem Fall natürlich auch die i18n-Verzeichnisse aktualisieren lassen. Für den Fall muß man zusätzlich wget bemühen:

wget -r -N -nd -P /var/www/mirror/debian/dists/lenny/main/i18n ftp://ftp.de.debian.org/debian/dists/lenny/main/i18n/

(zur Zeit unterstützt nur der main-Zweig von lenny diese Möglichkeit bei den zur Zeit verfügbaren stable Distributionen von Debian)

-r - rekursives Laden (alles im und unterhalb des Verzeichnisses i18n)
-N - Time-Stamping benutzen (lokale Dateien erhalten Dateistempel der Dateien des Servers; Wichtig für den Unterschiedsabgleich)
-nd - keine Verzeichnishierarchie (absolut) erstellen, sondern relativ im gewünschten Verzeichnis ablegen
-P - Verzeichnisprefix setzen

security-Repository

Um den security-Zweig hinzuzunehmen, benötigt man einen weiteren debmirror-Befehl:

debmirror /var/www/mirror/debian-security --progress --method=rsync --nosource --host=security.debian.org --root=:debian-security/ \
--dist=etch/updates,lenny/updates --section=main,contrib,non-free --arch=i386,amd64 --cleanup --passive --ignore-release-gpg -v

debian-multimedia-Repository

Falls man den debian-multimedia-Zweig haben möchte (enthält u.a. die Windows-Codecs oder die berühmte Bibliothek, mit der man DVDs abspielen kann, die mit dem CSS verschlüsselt sind), ist das auch möglich:

debmirror /var/www/mirror/debian-multimedia --progress --method=rsync --getcontents --nosource --host=www.debian-multimedia.org \
--root=:debian/ --dist=etch,lenny --section=main --arch=i386,amd64 --cleanup --passive --ignore-release-gpg -v

sources.list der jeweiligen beteiligten Rechner, die den Spiegel benutzen sollen

Voraussetzung für den Zugriff per apt(itude) von entfernten Rechnern ist natürlich ein korrekt eingerichteter Webserver (z.B. apache2), der als DocumentRoot z.B. auf /var/www zeigt.

Die sources.list-Zeilen sind dann so anzupassen:
deb http://IP/mirror/debian/ lenny main contrib non-free
deb http://IP/mirror/debian-security/ lenny/updates main contrib non-free
deb http://IP/mirror/debian-multimedia lenny main

Nutzung mit Schlüsselauthentifizierung (also ohne --ignore-release-gpg)

Um die Authentifizierung zu nutzen, muß dem debmirror natürlich der Schlüssel des jeweiligen Repository vorliegen. debmirror sucht den jeweils dazu im Verzeichnis .gnupg (im Home-Verzeichnis) in der Datei trustedkeys.gpg - falls man debmirror nicht als speziellen Benutzer ausführt, also im absoluten Verzeichnis /root/.gnupg

Weitere Schlüssel werden einfach an die Datei angehängt, also mit:

cat (Schlüssel) >> /root/.gnupg/trustedkeys.gpg

Die Schlüssel in der Datei trustedkeys.gpg müssen binär vorliegen, nicht in Textform (also nicht im Format "BEGIN SHA1 ... END SHA1")! ((( Umwandlungsbeschreibung folgt demnächst, ist nicht notwendig für debian und debian-multimedia )))

Schlüsselimportanweisungen der jeweiligen Repositories

debian-Repository: Schlüssel liegt am Ort /usr/share/keyrings/debian-archive-keyring.gpg, wenn das Paket debian-archive-keyring installiert ist. Gültig für debian- und debian-security-Repository. Keine Umwandlung des Schlüssels notwendig.
Installation:

cat /usr/share/keyrings/debian-archive-keyring.gpg >> /root/.gnupg/trustedkeys.gpg

debian-multimedia-Repository: Schlüssel liegt am Ort /usr/share/keyrings/debian-multimedia-keyring.gpg, wenn das Paket debian-multimedia-keyring installiert ist. Keine Umwandlung des Schlüssels notwendig.
Installation:

cat /usr/share/keyrings/debian-multimedia-keyring.gpg >> /root/.gnupg/trustedkeys.gpg

Von "http://www.lug-wr.de/wiki/index.php/Debmirror"

Diese Seite wurde bisher 8341 mal abgerufen. Diese Seite wurde zuletzt geändert um 20:38, 2. Dez 2009. Inhalt ist verfügbar unter der GNU Free Documentation License 1.2.