Login
Newsletter
Werbung

Do, 14. Oktober 2004, 00:00

Erzeugen von mit apt-rpm nutzbaren CDs

Ziel dieses Artikels ist eine CD, die man einfach mit apt-cdrom hinzufügen und dann nutzen kann.

Achtung: Diese Anleitung setzt grundlegende Linux-Kenntnisse und Erfahrung im Umgang mit apt bzw. apt-rpm voraus!

Vorwort

Meine RPM-basierten Systeme laufen mit apt-rpm jetzt schon seit einigen Jahren ohne Probleme. Von Zeit zu Zeit passiert es mir aber, daß ich aus verschiedenen Gründen nicht die Möglichkeit habe, auf meinen Server zuzugreifen, der die passenden RPM-Pakete zur Verfügung stellt. Zuletzt wollte ich einem Freund, der eine ISDN Verbindung besitzt, für seine SUSE-Installation die Updates über meine DSL-Verbindung herunterladen, um sie ihm dann auf CD zur Verfügung zu stellen. An für sich kein Problem, ich kann die Updates herunterladen und auf CD brennen. Mein Freund hat dann allerdings eine CD mit einem Haufen RPM-Paketen in den Händen, aus denen er sich die benötigten Pakete einzeln heraussuchen muss, um sie mit rpm -U updaten zu können.

Die nächstbessere Variante wäre, ihm apt-rpm zu installieren, ein lokales apt-get update && apt-get --print-uris upgrade zu machen, und ihm dann nur die Pakete aus dieser Liste zum Update zu bringen, die er dann recht komfortabel mit rpm -U *.rpm direkt von CD installieren könnte. Wenn ich aber zusätzlich noch andere Pakete mit Abhängigkeiten wie z.B. die von packman.links2linux.de dazugebe, muss er wieder alle Abhängigkeiten von Hand auflösen.

Einfaches Paketmanagement ist das so immer noch nicht. Ein paar Ideen zur Erstellung von lokalen Archiven, die apt-rpm nutzen kann, befinden sich auf der apt-rpm Homepage, aber wirklich praktikabel ist auch diese Variante nicht. Was ich möchte, ist eine CD, die ich einfach mit apt-cdrom hinzufügen und dann nutzen kann.

Vorbereitungen zur Erstellung der CD

Ich werde die Erstellung anhand der SuSE Linux 9.1 Update- und Packman-Pakete demonstrieren, die sich auf ftp.gwdg.de befinden.

Zunächst erstellen wir ein Verzeichnis namens susecd mit dem Unterverzeichnis SuSE-add-on, in dem wir die einzelnen Verzeichnisse mit den RPM-Paketen unterbringen.

mkdir -p ~/susecd/SuSE-add-on

Der nächste Schritt ist der Download aller benötigten RPM-Pakete, inklusive Verzeichnis (in meinem Fall RPMS.packman RPMS.packman-i686 RPMS.suser-rbos), mit wget -r --retr-symlinks in das Verzeichnis 'SuSE-add-on (beim parallelen Ausprobieren zum Lesen des Artikels ist zu berücksichtigen, dass das Herunterladen von ein paar hundert MiB durchaus eine Weile dauert).

cd ~/susecd/SuSE-add-on
wget -r --retr-symlinks ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.1-i386/RPMS.packman
wget -r --retr-symlinks ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.1-i386/RPMS.packman-i686
wget -r --retr-symlinks ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.1-i386/RPMS.suser-rbos

Jetzt sollte unsere Verzeichnisstruktur so aussehen:

~/susecd
 \
 SuSE-add-on
 \
 RPMS.packman
 RPMS.packman-i686
 RPMS.suser-rbos

Um das Ganze auch per apt-rpm nutzen zu können, generieren wir wie üblich mittels genbasedir die entsprechenden Indexdateien, mit denen apt-rpm arbeiten kann (das Programm genbasedir ist Teil von apt-rpm, apt-rpm sollte daher installiert sein).

genbasedir --flat --bloat --progress ~/susecd/SuSE-add-on/

Für die Leute, die mit apt-rpm vertraut sind, sollte dieser Vorgang nichts Neues sein. Wenn alles gut gelaufen ist, befindet sich nun unterhalb von SuSE-add-on zusätzlich ein Verzeichnis namens base mit folgenden Dateien:

pkglist.packman
pkglist.packman-i686
pkglist.suser-rbos
pkglist.packman.bz2
pkglist.packman-i686.bz2
pkglist.suser-rbos.bz2
release
release.packman
release.suser-rbos
release.packman-i686

Im letzten Schritt vor dem Mastern mit mkisofs (unerfahrene User können die Verwendung von mkisofs in der Manpage nachlesen) erstellen wir ein weiteres Unterverzeichnis im Verzeichnis susecd namens .disk, in dem wir wiederum eine Datei namens info anlegen. Die Datei info wird von apt-cdrom ausgelesen und sollte eine Bezeichnung für unsere CD enthalten, die hinterher auch in der Datei sources.list erscheinen wird.

$ mkdir susecd/.disk
$ echo "SuSE Linux 9.1 Unofficial Add-on CD i386 20040722" > \
 ~/susecd/.disk/info

Jetzt sind wir bereit, die CD mit mkisofs zu mastern und mit cdrecord zu brennen.

mkisofs -J -l -r -o /tmp/suseaddon.iso ~/susecd

Zurück am Zielsystem

Jetzt können wir unsere eigene »apt powered CD« in unserem Zielsystem einlegen und mittels apt-cdrom add hinzufügen.

# apt-cdrom add
Using CD-ROM mount point /mnt/cdrom/
Unmounting CD-ROM
Please insert a Disc in the drive and press enter
Mounting CD-ROM
Identifying..
[1aea5c5cda13d3c588453e284d23061d-2]
Scanning Disc for index files..
Found 3 package indexes and 0 source indexes.
This Disc is called:
'SuSE Linux 9.1 Unofficial Add-on CD i386 20040722'
Reading Indexes... Done
Writing new source list
Source List entries for this Disc are:
rpm cdrom:[SuSE Linux 9.1 Unofficial
Add-on CD i386 20040722]/ SuSE-add-on packman packman-i686
suser-rbos
Repeat this process for the rest of the CDs in your set.

Wenn wir uns jetzt unsere /etc/apt/sources.list angucken, finden wir dort für jede so hinzugefügte CD einen Eintrag. Alle über CD verfügbaren Pakete sind jetzt mit den apt-* Programmen erreichbar. Wenn ein Paket, das sich auf einer CD befindet, zur Installation ausgewählt wird fordert apt-get dazu auf, die entsprechende CD einzulegen. Um die Nutzung einer CD aufzugeben, reicht es, den Eintrag aus der Datei sources.list zu entfernen, die CD kann später mit apt-cdrom add einfach wieder hinzugefügt werden.

Have fun.

Erstveröffentlichung auf linux.com http://docs.linux.com/documentation/04/07/30/0015241.shtml?tid=89

Danke an Stephan Rottmann für Tipps und Gegenlesen.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung