Ein vereinfachter Blick auf die Grundlagen der RPM-Erstellung

© David Wunderlich, 2006

Einleitende Worte

Sie sollten das Folgende als normaler Nutzer und nicht als root machen.

Sie werden während dieses Prozesses einige root-Fenster geöffnet haben und, falls es Ihnen bis jetzt noch nicht gesagt wurde, sollten Sie als root immer sehr umsichtig arbeiten. Ich würde vorschlagen, den Farbenentwurf für das root-Konto zu ändern, entweder indem Sie sich als root anmelden oder indem Sie „kcontrol“ (ohne die Anführungsstriche) in einem root-Terminal laufen lassen. Dies hilft auf einfache Weise root und non-root Fenster voneinander zu unterscheiden.

Die meisten Programme kompilieren mit den drei „Standard“ Befehlen: ./configure, make und make install. Einige, insbesondere auf Python basierende Programme, jedoch nicht auf diese Weise. Diese Programme werden hier nicht besprochen, da ich davon ungenügende Kenntnisse habe.

Wenn ein Programm nach einer neueren Version einer Bibliothek fragt, die bereits in den Repositories ist, seien Sie sehr vorsichtig bei dem Gedanken das Programm selbst zu aktualisieren. Sie könnten damit Ihr System sehr leicht ruinieren. In solchen Fällen ist es angeraten, geduldig zu sein, notieren Sie sich die benötigte Bibliotheksaktuallisierung zur Erstellung des RPMs und warten Sie auf sein Erscheinen in den Repos.

Ein bisschen Jargon

Wenn Sie nach irgendwelchen header (normalerweise KDE headers) gefragt werden, sind damit die Entwicklungspakete für das Angefragte gemeint. Zum Beispiel sollte die Installation der kdebase-devel und kdelibs-devel Pakete die Frage nach KDE headers lösen.

Wenn Sie nach einem bestimmten Paket gefragt werden, bedeutet das normalerweise, dass Sie nicht nur das Paket sondern auch sein Entwicklungspaket benötigen. Wenn ein Paket libarts erfordert, können Sie feststellen, dass libarts bereits installiert ist. Um ein Programm zu kompilieren das es verwendet, müssen Sie also auch libarts-devel installieren.

Einleitung in das Kompilieren

Wenn Sie bereits wissen wie man vom Quellcode kompiliert, können Sie diesen Abschnitt überspringen.

Wie weiter oben bereits erwähnt, gibt es einen Standard Software zu kompilieren: mit ./configure, make, make install. Dies beschreiben wir am Beispiel von Solseek, einem Kicker-Applet, welches Abbildungen der Sonne anzeigt. Die Quelle laden Sie bitte von hier herunter:

http://www.kde-apps.org/content/show.php?content=31311

Wählen Sie einen Ordner zum kompilieren der Quellen aus (ich benutze den tmp Ordner innerhalb meines Basisordners). Es macht Sinn die Quellen und die Kompilierung immer im selben Ordner durchzuführen, damit diese Dinge nicht überall rumliegen. Legen Sie die Solseek Quelle hierhin und entpacken Sie sie mit Ark.

Gehen Sie zu diesem Ordner und öffnen Sie hier ein Terminal (wenn Sie in Konqueror die Taste F4 drücken wird eine Konsole im angezeigten Ordner geöffnet - eine sehr nützliche Sache). Jetzt schreiben Sie „./configure“ ohne die Anführungsstriche. Dieses überprüft alle erforderlichen Bibliotheken für Ihre RPM-Erstellung. Installieren Sie alle fehlenden mit Synaptic und wiederholen diesen Schritt, bis Sie in der Konsole keine Fehlermeldung mehr erhalten.

Jetzt schreiben Sie „make“ (ohne die Anführungsstriche). Make ist eins der GNU-Dienstprogramme und es erledigt für Sie alle schmutzige Arbeit beim Kompilieren von Software. Dieses ist der Schritt, der die meiste Zeit benötigt, und umso grösser die Quelle, umso länger dauert es. Solseek ist klein und hat keine schwierigen Abhängigkeiten, also sollte dies ziemlich schnell und schmerzlos gehen.

Für den nächsten Schritt, der Installation, müssen Sie root werden, geben Sie dazu „su“ ein. Sobald Sie Ihr root-Kennwort eingetippt haben schreiben Sie „make install“ (ohne die Anführungsstriche) und Ihre frisch-kompilierte Anwendung wird installiert. Sie sollten jetzt in der Lage sein, Solseek wie jedes andere Applet in Kicker hinzuzufügen. Herzlichen Glückwunsch, Sie haben gerade erfolgreich ein Paket kompiliert und installiert!

Jetzt werden wir Solseek wieder entfernen, da es später noch nützlich sein wird und wir wollen vermeiden, dass diese Installation Probleme bereiten könnte. Entfernen Sie Solseek von Kicker, dann weiterhin als root, schreiben Sie „make uninstall“ (ohne die Anführungsstriche). Dieses deinstalliert Solseek. Damit „make uninstall“ funktioniert, muss es von einer Konsole im gleichen Verzeichnis ausgeführt werden, in dem das Programm kompiliert wurde und die Quellen noch vorhanden sind. Es geht nicht so einfach wie mit apt-get in einer root-Konsole, was in jedem Verzeichnis funktioniert.

Wo die Zauberei stattfindet

RPM Pakete werden in PCLinuxOS immer am selben Ort erstellt - dem Ordner /usr/src/RPM. Hier gibt es einige zu betrachten Ordner:

  • Der Ordner BUILD ist der, wo die Quellen entpackt werden. Nach der RPM-Erstellung können Sie die hier entpackten Quellen manuell löschen, um keinen Platz auf Ihrer Festplatte zu vergeuden.
  • Der Ordner RPMS enthält die fertigen RPMs. Darin gibt es weitere Prozessor spezifische Unterordner. Wir interessieren uns hier für den i586 Ordner, denn in PCLOS werden die Pakete standardgemäss auf diese Prozessorarchitektur optimiert.
  • Der Ordner SOURCES enthält die Quellen und Spec-Dateien. Letztere werden später besprochen.
  • Der Ordner SPECS enthält manchmal Spec-Dateien. Persönlich verwende ich diesen Ordner kaum, wenn überhaupt.
  • Der Ordner SRPMS wird die von Ihnen zu erstellende SRPMs enthalten.

Eine kurze Anmerkung über SRPMs

SRPMs sind Quellpakete im RPM-Stil, also ist es einfach, sie zu kompilieren. Sie haben die Endung .src.rpm. Um sie in ein RPM zu kompilieren, legen Sie das SRPM einfach in den Ordner SOURCES und geben dort als root ein „rpm --rebuild foo-1.2.3-1.src.rpm“, wobei foo-1.2.3.src.rpm das zu kompilierende Paket ist.

SRPMs werden leicht mit diesem Befehl entpackt:

rpm2cpio foo-1.2.3-1.src.rpm | cpio -idmv --no-absolute-filenames

wobei wieder foo-1.2.3.src.rpm das zu kompilierende Paket ist. Dieser Befehl entpackt die verwendeten Quellen und die Spec-Datei. Die Verwendung von SRPMs von anderen ist häufig ein günstiger Ausgangspunkt. Zur Erstellung von PCLOS RPMs beginnen wir mit Mandriva SRPMs, weil deren Spec-Dateien wie die von PCLOS aufgebaut sind und beide die gleiche Bibliotheks-Namensgebung verwenden.

Einige gute Links:

Offizielle PCLOS SRPMs:
ftp://ftp.tuxmachines.org/pub/pclinuxos/srpms/
Zu PCLOS beigesteuerte SRPMs:
http://texsrc.trident.kicks-ass.net/contrib/
Thacs SRPMs:
http://www.mde.djura.org/pclinuxos/2005/SRPMS.thac/
Mandriva SRPMs:
http://mirrors.evolva.ro/mandriva/official/current/SRPMS
RPM-Suche:
http://rpm.pbone.net/

Spec-Dateien

Was sind diese Spec-Dateien überhaupt? Sie sind das Rezept zur RPM-Erstellung. Sie haben ihre eigene Funktionsweise, aber wenn Sie sich erstmal daran gewöhnt haben, sind sie nicht schlecht.

Das Solseek SRPM von hier runterladen:

http://files.filefront.com/solseek_07_1texsrcrpm/;5269539;;/fileinfo.html

Verzeihen Sie mir bitte die Anzeigen, aber es ist ein freier Server ohne Bandbreitenbeschränkung.

Kopieren Sie es zu SOURCES und dann entpacken Sie es mit dem oben erwähnten Befehl. Der Ordner hat nun die drei Dateien: das SRPM, die Solseek Quelle und die solseek.spec Datei. Die Spec-Datei öffnen Sie mit Ihrem Lieblingseditor (z.B. Kwrite).

Für RPM-Dateien gibt es bestimmte vordefinierte Attribute, die Sie eingeben müssen und die weiter unten in Fettschrift angezeigt sind. Diese sollten logisch sein. Manchmal sehen Sie mehr, manchmal weniger, aber wir beschreiben hier erst einmal nur die Wichtigen. Hierzu einige Anmerkungen.

  • Summary: dies wird im Feld Beschreibung in Synaptic angezeigt.
  • Release: die aktuelle Version des RPMs. Es sagt 1, weil es die erste ist, und tex, weil es zu Texstar's Distro gehört. Sie müssen dieses Feld ändern, wenn Sie SRPMS einer anderen Distro umbauen.
  • Group: das Programm erscheint in diesem Abschnitt von Synaptic.
  • Für Quelle sehen Sie "%{name}-%{version}.tar.bz2". %{name} und %{Version} sind Platzhalter für die bereits definierten Namen- und Versionsfelder. Diese müssen Sie daher nur einmal am Anfang aktualisieren und nicht an allen anderen Stellen innerhalb der Datei.
  • Unter %description kann man eine längere Beschreibung eintragen, die in der untereren rechten Leiste von Synaptic erscheint. Am Einfachsten kopiert man hier und in der Summary Material von der entsprechenden Webseite rein.
  • Überspringen Sie das seltsame Zeug bis zum Dateiende zur Stelle %changelog. Hier halten die Leute Versionsänderungen fest. Das Format ist standardisiert, ändern Sie es daher also nicht. Und so sieht das Format im Allgemeinen aus:
    Tag Monat Jahr IhrName <Ihre@Email.Adresse> Version-Freigabe - Anmerkungen zu den Änderungen
    Wenn Sie möchten, können Sie das Datum zum heutigen Tag und den Namen und die Email-Adresse ändern. Wenn Sie etwas falsch machen, wird die Kompilierung mit einer Beschwerde fehlschlagen. Die Spec-Datei speichern und fortfahren.

Erstellen Ihres ersten RPMs

Für den folgende Teil öffen Sie am besten ein Konqueror Fenster mit root Rechten über (K-Menü: Anwendungen > Dateien bearbeiten > Dateimanager - Superbenutzer-Modus). Deshalb schlug ich vor, dass root einen andere Farbe haben sollte, damit es auffällt und unvorsichtige Fehler vermeiden hilft. Ich persönlich habe in diesem Fenster die folgenden Ordner in Tabs geöffnet: SOURCES, Ihren Basisordner, i586 und SRPMS.

Eine Konsole im Ordner SOURCES öffnen (drücken Sie die F4 Taste in Konqueror, erinnern Sie sich?) und dort schreiben Sie „rpm -ba solseek.spec“ (ohne die Anführungsstriche). Dieses ruft die RPM Befehlszeilenschnittstelle auf, um Ihr Paket zu erstellen. Die Option „-ba“ (build all) besagt, dass Sie beide Pakete, das RPM und das SRPM erstellen möchten ; die Option „-b“ erstellt nur das RPM ohne das SRPM Quellpaket.

Anschließend finden Sie eine neue solseek-0.7-1tex.i586.rpm Datei im Ordner i586, und eine solseek-0.7-1tex.src.rpm Datei erscheint im Ordner SRPMS. Sie können nun das Solseek RPM installieren, indem Sie einen Rechtsklick drauf machen und auswählen „mit KPackage öffnen“, wenn Sie KPackage installiert haben oder Sie geben in einer root-Konsole im i586 Ordner ein „rpm -i solseek-0.7-1tex.i586.rpm“ (ohne die Anführungsstriche).

Sie sollten jetzt in der Lage sein, Solseek zu Ihrem Kicker hinzuzufügen. Wenn das funktioniert, dann herzlichen Glückwunsch, Sie haben gerade Ihr erstes erfolgreiches RPM gebaut!

Top Weiter