0390: Einen Debian-Mirror aus 5 vorhandenen DVD-Images erstellenIn 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 VersuchsaufbauWir testen die Transformation mit dem Betriebssystem Debian Squeeze 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_6_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"-VerzeichnisDas "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:
Wenn ein Eintrag gefunden wurde, dann kann der Eintrag ausgewertet und das Paket installiert werden. 2.2. Das "pool"-VerzeichnisNatü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 HintergrundwissenIm 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 machenBevor Sie mit der Transformation beginnen können, müssen Sie ein paar Vorbereitungen treffen. 3.1. Mehr Loop-Devices reservierenPer 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-ImagesFü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_6_0_4/9mirroring/1dvd-images 3.3. Images mountenMounten Sie jetzt nacheinander die DVD-Images: cd debian_6_0_4/9mirroring/1dvd-images mkdir dvd1 mkdir dvd2 mkdir dvd3 mkdir dvd4 mkdir dvd5 mount -t iso9660 debian-604-i386-DVD-1.iso dvd1 -o loop mount -t iso9660 debian-604-i386-DVD-2.iso dvd2 -o loop mount -t iso9660 debian-604-i386-DVD-3.iso dvd3 -o loop mount -t iso9660 debian-604-i386-DVD-4.iso dvd4 -o loop mount -t iso9660 debian-604-i386-DVD-5.iso dvd5 -o loop cd ../../.. 4. Die Einzelteile der fünf DVD-Images zu einem Debian-Mirror zusammenkopierenDer 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 UmgebungWie 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_6_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 UmgebungWä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.
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/squeeze/main/binary-i386 cp -a Packages Packages.backup gzip -9v Packages mv Packages.backup Packages cd ../../../../.. cd 2debian-mirror/dists/squeeze/main/debian-installer/binary-i386 cp -a Packages Packages.backup gzip -9v Packages mv Packages.backup Packages cd ../../../../../.. cd 2debian-mirror/dists/squeeze/contrib/binary-i386 cp -a Packages Packages.backup gzip -9v Packages mv Packages.backup Packages cd ../../../../.. 4.3. Kopieren der InstallationsimagesIm 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 Squeeze 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-ImagesWenn Sie mit allem fertig sind, können Sie die DVD-Images wieder unmounten: cd debian_6_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!
|