Start   Impressum   Lizenz         online lesen   Download         Online-Shop   Jumping Blue Turtle

Debian für Unternehmer - Debian-Know-how

0390: Einen Debian-Mirror aus 5 vorhandenen DVD-Images erstellen

In diesem Modul wird gezeigt, wie aus den vorhandenen fünf "DVD"-Images ein Debian-Repository erzeugt werden kann. Umgangssprachlich wird ein Debian-Repository auch "Debian-Mirror" genannt.

1. Der Versuchsaufbau

Wir testen die Transformation mit dem Betriebssystem Debian Lenny R4. Für die Versuche benötigen wir ein Verzeichnis auf einer Partition, die mindestens 50 Gigabyte groß sein sollte. Der Einfachheit halber, gehe ich davon aus, dass die Festplatte, auf der sich Ihr Rohstofflager befindet, groß genug ist.

Navigieren Sie nun in das Rohstofflager. Legen Sie dort ein paar Verzeichnisse an, die für das gleich stattfindende Experiment nötig sind:

cd debian_5_0_4
mkdir 9mirroring

Innerhalb dieses Verzeichnisses erzeugen wir jeweils ein Verzeichnis für die DVD-Original-Images und für den zu erstellenden Debian-Mirror:

cd 9mirroring

mkdir 1dvd-images
mkdir 2debian-mirror

cd ../..

2. Beschäftigen Sie sich mit dem Thema "Debian-Repository"

Im Grunde ist das, was sich auf den DVD-Images befindet, nichts weiter als ein "Debian-Repository". Was wir jetzt vorhaben, ist, dass wir die fünf "Debian-Repositories" zum einem einzigen "Debian-Repository" verschmelzen.

Auf den DVD-Images befinden sich viele verschiedene Verzeichnisse und Dateien. Für jemanden, der das erst einmal nur verstehen will, ist das für den Anfang zu viel.

Wirklich wesentlich für einen Debian-Mirror sind eigentlich nur die 2 Verzeichnisse "dists" und "pool".

2.1. Das "dists"-Verzeichnis

Das "dists"-Verzeichnis enthält Paketinformationen zu den Paketen, die im aktuellen "Debian-Repository" enthalten sind. Wenn Sie das "Debian-Repository" in der Datei "/etc/apt/sources.list" vermerkt haben und ein Paket nachinstallieren, dann sucht APT zuerst im "dists"-Verzeichnis des "Debian-Repositorys" nach dem Paket, und zwar im Detail so:

  1. Wechseln in das "dists"-Verzeichnis
  2. Innerhalb des "dists"-Verzeichnis: Wechseln in das Unterverzeichnis der entsprechenden Debian-Version. Zum Beispiel in das Verzeichnis mit dem Namen "lenny".
  3. Innerhalb des Versions-Verzeichnisses: Wechseln in das Unterverzeichnis der "Abteilung" (gemeint ist "main", "contrib", "non-free" oder "non-us"). Zum Beispiel in das Verzeichnis mit dem Namen "main".
  4. Innerhalb des Abteilungs-Verzeichnisses: Wechseln in das Unterverzeichnis der Rechner-Architektur. Zum Beispiel in das Verzeichnis mit dem Namen "binary-i386".
  5. Innerhalb des Architektur-Verzeichnisses: Öffnen der Datei mit dem Namen "Packages.gz".
  6. Innerhalb der Packages-Datei: Nachsehen, ob ein Eintrag zum zu installierenden Paket vorhanden ist.

Wenn ein Eintrag gefunden wurde, dann kann der Eintrag ausgewertet und das Paket installiert werden.

2.2. Das "pool"-Verzeichnis

Natürlich hat in unserem Beispiel APT nur einen Eintrag zum zu installierenden Paket gefunden (die Paketinformation), jedoch nicht das zu installierende Paket selbst.

Die Paketinformation enthält aber einen Untereintrag mit dem Namen "Filename". Die Pakete selbst sind Dateien, deren Namen auf ".deb" enden. Sie liegen im "pool"-Verzeichnis und die einzelnen Paketinformationen verweisen darauf (mit Hilfe des Untereintrags "Filename"). In unserem Beispiel findet APT also das zu installierende Paket im "pool"-Verzeichnis und kann es endlich installieren.

2.3. Mehr Hintergrundwissen

Im Wesentlichen haben Sie nun den Aufbau und die Funktionsweise eines Debian-Mirrors verstanden. Mehr Details können Sie hier nachlesen:

3. Inhalte der DVD-Images verfügbar machen

Bevor Sie mit der Transformation beginnen können, müssen Sie ein paar Vorbereitungen treffen.

3.1. Mehr Loop-Devices reservieren

Per Default ist die Anzahl der mount-baren Loop-Devices unter Linux auf 8 beschränkt. Das können Sie selbst ausprobieren, indem Sie mal versuchen, mehr als 8 virtuelle Partitionen (zum Beispiel CD-Images) gleichzeitig zu mounten. Sie werden das nicht schaffen. Mit dem Versuch, die neunte virtuelle Partition zu mounten, erhalten Sie die Fehlermeldung "mount: could not find any free loop device".

Ich werde Ihnen gleich empfehlen, fünf DVD-Images gleichzeitig zu mounten. Damit das auch dann klappt, wenn Sie bereits ein paar virtuelle Images gemountet haben, muss die Anzahl der möglichen Loop-Devices erhöht werden, zum Beispiel auf 64. Editieren Sie dazu die Datei "/etc/modules". Ändern Sie den Eintrag "loop" um in "loop max_loop=64". Der neue Inhalt der Datei könnte nun wie folgt aussehen:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

loop max_loop=64
sbp2

Starten Sie den Rechner neu, damit die Option wirksam wird.

3.2. Besorgen Sie sich die DVD-Images

Für dieses Experiment benötigen Sie die DVD-Images. Um an die DVD-Images heranzukommen, gibt es viele verschiedene Möglichkeiten. Mehr zu diesen Möglichkeiten erfahren Sie hier, hier und hier.

Legen Sie die DVD-Images im Rohstofflager ab. Die nachfolgenden Schritte erwarten die Images an folgendem Ort:

debian_5_0_4/9mirroring/1dvd-images

3.3. Images mounten

Mounten Sie jetzt nacheinander die DVD-Images:

cd debian_5_0_4/9mirroring/1dvd-images

mkdir dvd1
mkdir dvd2
mkdir dvd3
mkdir dvd4
mkdir dvd5

mount -t iso9660 debian-504-i386-DVD-1.iso dvd1 -o loop
mount -t iso9660 debian-504-i386-DVD-2.iso dvd2 -o loop
mount -t iso9660 debian-504-i386-DVD-3.iso dvd3 -o loop
mount -t iso9660 debian-504-i386-DVD-4.iso dvd4 -o loop
mount -t iso9660 debian-504-i386-DVD-5.iso dvd5 -o loop

cd ../../..

4. Die Einzelteile der fünf DVD-Images zu einem Debian-Mirror zusammenkopieren

Der Trick des Zusammenkopierens besteht darin, die Inhalte der "pool"-Verzeichnisse per "cp"-Befehl oder mit Hilfe eines Dateibrowsers (z.B. mit Hilfe des Midnight Commanders) zusammenzukopieren und die Inhalte der "dists"-Verzeichnisse mit Hilfe des "cat"-Befehls zusammenzubauen.

4.1. Kopieren der Pakete in die neue Umgebung

Wie Sie bereits wissen, befinden sich die Pakete in den "pool"-Verzeichnissen der Debian-Repositories. Sie fügen diese Pool-Verzeichnisse nun wie folgt zu zusammen:

cd debian_5_0_4/9mirroring

cp -a -i 1dvd-images/dvd1/pool 2debian-mirror
cp -a -i 1dvd-images/dvd2/pool 2debian-mirror
cp -a -i 1dvd-images/dvd3/pool 2debian-mirror
cp -a -i 1dvd-images/dvd4/pool 2debian-mirror
cp -a -i 1dvd-images/dvd5/pool 2debian-mirror

cd ../..

Wenn alles glatt gegangen ist, dann werden Sie feststellen, dass bei dem Kopiervorgang zu keinem Zeitpunkt eine bereits existierende Datei überschrieben werden musste. Daran erkennen Sie, dass die Debian-Pakete tatsächlich auf fünf DVD-Images aufgeteilt wurden, ohne Redundanzen.

4.2. Kopieren der Paketinformationen in die neue Umgebung

Während sich die "pool"-Verzeichnisse so leicht zusammenkopieren lassen, wird das bei den "dists"-Verzeichnissen etwas schwieriger. Wir werden es jetzt trotzdem tun. Nach dieser Aktion werden Sie verstehen, was am "dists"-Verzeichnis gegenüber dem "pool"-Verzeichnis die Herausforderung ist.

  1. Erstellen Sie im Ziel-Repository ein "dists"-Verzeichnis:
    cd debian_5_0_4/9mirroring
    mkdir 2debian-mirror/dists
    mkdir 2debian-mirror/dists/lenny
    
  2. Kopieren Sie nun die Paketinformationen der DVD1 in das Zielverzeichnis. Sie sollten dabei wissen, dass die Packages-Dateien immer doppelt vorhanden sind: Einmal unkomprimiert als "Packages" und einmal komprimiert als "Packages.gz".
    mkdir 2debian-mirror/dists/lenny/main
    mkdir 2debian-mirror/dists/lenny/main/debian-installer
    mkdir 2debian-mirror/dists/lenny/contrib
    
    mkdir 2debian-mirror/dists/lenny/main/binary-i386
    mkdir 2debian-mirror/dists/lenny/main/debian-installer/binary-i386
    mkdir 2debian-mirror/dists/lenny/contrib/binary-i386
    
    >2debian-mirror/dists/lenny/main/binary-i386/Packages
    >2debian-mirror/dists/lenny/main/debian-installer/binary-i386/Packages
    >2debian-mirror/dists/lenny/contrib/binary-i386/Packages
    
    
    
    cat 1dvd-images/dvd1/dists/lenny/main/binary-i386/Packages>>\
    2debian-mirror/dists/lenny/main/binary-i386/Packages
    
    cat 1dvd-images/dvd1/dists/lenny/main/debian-installer/binary-i386/Packages>>\
    2debian-mirror/dists/lenny/main/debian-installer/binary-i386/Packages
    
    cat 1dvd-images/dvd1/dists/lenny/contrib/binary-i386/Packages>>\
    2debian-mirror/dists/lenny/contrib/binary-i386/Packages
    
  3. Jetzt kopieren Sie die Paketinformationen der DVD2 in das Zielverzeichnis.
    cat 1dvd-images/dvd2/dists/lenny/main/binary-i386/Packages>>\
    2debian-mirror/dists/lenny/main/binary-i386/Packages
    
    cat 1dvd-images/dvd2/dists/lenny/contrib/binary-i386/Packages>>\
    2debian-mirror/dists/lenny/contrib/binary-i386/Packages
    
  4. Jetzt kopieren Sie die Paketinformationen der DVD3 in das Zielverzeichnis.
    cat 1dvd-images/dvd3/dists/lenny/main/binary-i386/Packages>>\
    2debian-mirror/dists/lenny/main/binary-i386/Packages
    
    cat 1dvd-images/dvd3/dists/lenny/contrib/binary-i386/Packages>>\
    2debian-mirror/dists/lenny/contrib/binary-i386/Packages
    
  5. Jetzt kopieren Sie die Paketinformationen der DVD4 in das Zielverzeichnis.
    cat 1dvd-images/dvd4/dists/lenny/main/binary-i386/Packages>>\
    2debian-mirror/dists/lenny/main/binary-i386/Packages
    
    cat 1dvd-images/dvd4/dists/lenny/contrib/binary-i386/Packages>>\
    2debian-mirror/dists/lenny/contrib/binary-i386/Packages
    
  6. Und zuletzt kopieren Sie die Paketinformationen der DVD5 in das Zielverzeichnis.
    cat 1dvd-images/dvd5/dists/lenny/main/binary-i386/Packages>>\
    2debian-mirror/dists/lenny/main/binary-i386/Packages
    
    cat 1dvd-images/dvd5/dists/lenny/contrib/binary-i386/Packages>>\
    2debian-mirror/dists/lenny/contrib/binary-i386/Packages
    

Anhand der gezeigten Befehle können Sie sehen, dass im "dists"-Verzeichnis die Dateien ineinanderkopiert werden müssen. Das ist deshalb notwendig, weil eine Packages-Datei aus einer Aneinanderreihung von Paketinformationen besteht und die Paketinformationen, die vorher auf fünf DVDs aufgeteilt waren, nun zusammengefügt in einer einzigen Datei benötigt werden. Um ein Ineinanderkopieren zu erreichen, benutzen wir den "cat"-Befehl.

Nach dem Ineinanderkopieren der Packages-Dateien müssen wir die Resultate noch komprimieren, weil APT auf die komprimierten Versionen zugreift:

cd 2debian-mirror/dists/lenny/main/binary-i386
cp -a Packages Packages.backup
gzip -9v Packages
mv Packages.backup Packages
cd ../../../../..

cd 2debian-mirror/dists/lenny/main/debian-installer/binary-i386
cp -a Packages Packages.backup
gzip -9v Packages
mv Packages.backup Packages
cd ../../../../../..

cd 2debian-mirror/dists/lenny/contrib/binary-i386
cp -a Packages Packages.backup
gzip -9v Packages
mv Packages.backup Packages
cd ../../../../..

4.3. Kopieren der Installationsimages

Im Prinzip ist der Debian-Mirror nun fertig, bis auf eine Kleinigkeit: Wenn Sie den Debian-Mirror nutzen wollen, um daraus DVD-Images für Debian Lenny R4 zu generieren (siehe Modul 0391), müssen Sie noch ein paar Installationsimages kopieren, die benötigt werden, wenn Sie von den DVDs aus ein Debian installieren möchten. Gehen Sie wie folgt vor:

cp -a 1dvd-images/dvd1/install.386 2debian-mirror
cd ../..

5. Unmounten der DVD-Images

Wenn Sie mit allem fertig sind, können Sie die DVD-Images wieder unmounten:

cd debian_5_0_4/9mirroring/1dvd-images

umount dvd5
umount dvd4
umount dvd3
umount dvd2
umount dvd1

rm -R dvd5
rm -R dvd4
rm -R dvd3
rm -R dvd2
rm -R dvd1

cd ../..

Herzlichen Glückwunsch! Ihr Debian-Repository ist nun fertig!