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.