Das Kommandozeilen-Tool Yum katapultiert die Paketverwaltung von Red Hat und Fedora in die benutzerfreundliche Nähe von Debians Apt-get [1]. Yum löst Abhängigkeiten auf und holt selbstständig alle nötigen Pakete aus so genannten Yum-Repositories im Internet. Leider holt das Tool die Pakete immer online, was auch den Besitzern von Red-Hat- und Fedora-Installations-DVDs lange Download-Zeiten beschert. Die Medien sind nicht Yum-fähig, weil auf ihnen das Verzeichnis »repodata« fehlt, das bei Repositories die nötigen Metadaten über vorhandene Software führt.
Lösung: Union-FS
Das Overlay-Filesystem Union-FS [2] löst dieses und viele ähnliche Probleme, indem es ein schreibbares Verzeichnis in die nur lesbare DVD einklinkt. Union-FS gehorcht einem Schichtenmodell: Die als ein einziges Verzeichnis im Dateisystem erscheinenden Teil-Mounts liegen in vorgegebener Reihenfolge übereinander. Union-FS versucht die anstehende Da-teioperation zuerst auf das oberste Ele-ment anzuwenden. Deshalb heißt solch ein System Stack-able Filesystem. Weil es mehrere Verzeichnisse zu einem bündelt, spricht man auch von Namespace Unification.
Die Entwickler haben das Union-FS als Kernelmodul implementiert. Deshalb setzt es zur Kompilierung die Kernelquellen voraus, bei Fedora Core 4 das Paket »kernel-devel-Version_FC4.Architektur.rpm«. Um ein Repository anzulegen, bedarf es des Pakets »createrepo-0.4.2-2.noarch.rpm«.
Zusammen mounten
Ist Union-FS kompiliert und installiert, geht es ans Einrichten des Repository. Das dafür zuständige Skript »createrepo« erwartet als Parameter einen Pfad, der die RPM-Pakete enthält. Es kennt keinen zweiten Parameter zur Ausgabe der Repository-Metadaten, sondern schreibt die-se in das Unterverzeichnis »repodata« des RPM-Directory. Während der Arbeit benutzt es ein temporäres Verzeichnis ».repodata«, das es nach getaner Arbeit in ».olddata« umbenennt.
Da das Skript natürlich nicht auf die nur lesbare DVD schreiben kann, mountet man ein schreibbares Verzeichnis mit Union-FS in das RPM-Directory, im Beispiel »/mnt/repomount«. Ein weiteres Verzeichnis, »/media/fedora-base«, nimmt die Kombination von DVD und Repository-Daten auf. Abbildung 1 veranschaulicht den Dateisystem-Stack im Beispielfall.
Der Mount-Befehl erwartet beim Dateisystemtyp »unionfs« hinter dem Schalter »-o« die Option »dirs«, nach der alle zu kombinierenden Verzeichnisse durch Doppelpunkte getrennt erscheinen. Die Fedora-DVD ist hier schon auf »/media/cdrom« gemountet:
mount -t unionfs -o dirs=/mnt/repomount=U rw:/media/cdrom/Fedora/RPMS=ro unionfs U /media/fedora-base/
Wie das Beispiel zeigt, folgt hinter den Pfadangaben noch ein Flag für die Rechte: »rw« fürs Lesen und Schreiben, »ro« fürs Nur-Lesen. Das zweite »unionfs« dient als Dummy für das Device, das der Mount-Befehl erwartet - ähnlich wie »none« beim ProcFS.
Zum Test sollten sich im Verzeichnis »RPMS« Dateien anlegen lassen, die Union-FS tatsächlich im Verzeichnis »/mnt/repomount« erzeugt. Wichtig ist die Mount-Reihenfolge, denn Union-FS beachtet bei allen Dateioperationen die Reihenfolge der gemounteten Filesysteme. Bei umgekehrter Ordnung würde richtigerweise der Versuch scheitern, ein Verzeichnis anzulegen, denn die DVD selbst ist ja nicht schreibbar.