Einfacher als gedacht

Da Patches für eine bestimmte Version eines Programms geschrieben sind und die neuere Fassung die mit ihnen adressierten Fehler hoffentlich ohnehin beseitigt hat, sollten Sie zunächst einmal alle entsprechenden Zeilen mit einer Raute (#) auskommentieren.

Im Galculator-Spec betrifft dies die Zeilen 11 (Patch0: %name-ld_fix.diff), 24 (%patch0) sowie den Aufruf von autoreconf-fi in Zeile 27, der erst durch den Patch nötig wird, wie sich dem Changelog-Eintrag 2 entnehmen lässt.

Dass Galculator++2.0 jetzt GTK3 benutzt, lässt sich auf der als Upstream-URL in der Spec-Datei genannten Programm-Homepage nachlesen. Ändern Sie daher unter BuildRequires: die Abhängigkeit gtk2-devel nach gtk3-devel. Dann brauchen Sie nur noch das Version:-Feld auf 2.0.1 sowie die Release-Nummer für das Paket (Release:) auf 1.0.0 zu setzen und das Quellcode-Archiv galculator-2.0.1.tar.bz2 von der Projektseite in das Verzeichnis rpmbuild/SOURCES/ herunterzuladen.

Nun ist die Spec-Datei reif für den Aufruf rpmbuild -bb galculator.spec. Installieren Sie gegebenenfalls noch alle als Failed build dependencies angemahnten Pakete. Bei einem erneuten Aufruf von Rpmbuild signalisiert dann die Zeile Wrote: /home/user/rpmbuild/RPMS/i586/galculator-2.0.1-1.0.0.i586.rpm gegen Ende der Meldungen, dass ein RPM für Galculator 2.0.1 in Ihrem RPMS-Verzeichnis liegt (Abbildung 4).

Abbildung 4: Treffer! Rpmbuild hat ein Paket für Galculator 2.0.1 gebaut (rot) und die Abhängigkeiten dabei automatisch berechnet (blau). Auch der Check auf in %files übersehene Dateien war erfolgreich (keine Meldung, grün).

Schritt für Schritt

Nicht immer verläuft ein Update auf eine neue Programmversion so reibungslos wie beim Galculator-Beispiel, wo schon ein Auskommentieren der Patches und Anpassen des Version-Felds zum Erfolg führt. Für einen Fehlschlag gibt es die verschiedensten Ursachen: Oft stimmen die BuildRequires nicht mehr, manchmal ändern sich die Optionen für configure. Dass die %files-Liste in unserem Beispiel trotz Major-Versionssprung noch zutrifft, ist eher die Ausnahme.

Wenn es Ihnen aber gelingt, das Programm von Hand zu kompilieren, lässt es sich praktisch immer auch in ein RPM verpacken. Wechseln Sie nach einem Misserfolg mit Rpmbuild auf der Konsole in das Verzeichnis ~/rpmbuild/BUILD/Name-Version/, denn dort liegt der Quellcode in dem Zustand, wie ihn der abgebrochene Paketbauversuch hinterlässt. Kompilieren Sie das Programm von dort aus und verändern Sie mit den so gewonnenen Erkenntnissen die %build-Sektion in der Spec-Datei. Das Kommando rpmbuild -bc name.spec führt nur die Befehle unter %prep und %build aus, womit Sie prüfen, ob die Spec-Datei bis einschließlich %build nun in Ordnung ist (Abbildung 5).

Abbildung 5: Wenn Rpmbuild nicht bis zum Ende durchläuft, helfen Schalter, die den Bauprozess nur bis zu einer bestimmten Stelle ausführen, bei der Fehlersuche.

Bei rpmbuild -bi name.spec laufen zusätzlich noch die Befehle unter %install durch. Klappt auch dabei noch alles, dann liegen alle Dateien, die make install einspielt, unter ~/rpmbuild/BUILDROOT/Name-Version/. Überprüfen Sie nun, ob die %files-Liste diese alle erfasst. Trifft das zu, sollte sich das Binärpaket mit rpmbuild -bb name.spec bauen lassen. Bei allen Zwischenschritten sorgt die Option -vv beim Rpmbuild-Aufruf für zusätzliche Information.

Weiterführendes

Wer mehr Informationen braucht, findet im Fedora-Wiki eine vom Umfang her verdauliche Anleitung [6], die sich auch auf andere RPM-basierte Distributionen übertragen lässt. Als umfassendes Standardwerk gilt Eric Foster-Johnsons "RPM-Guide" [7].

Suse-spezifische Informationen liefern die ebenfalls sehr umfangreichen und auf professionelle Maintainer zugeschnittenen OpenSuse-Packaging-Guidelines [4], die Einsteiger allerdings überfordern dürften. Das gilt auch für das Fedora-Pendant [8]. Die zahlreichen Makros für OpenSuse- [5] beziehungsweise Fedora-Spec-Dateien [9] beschreiben Artikel auf den Webseiten der beiden Projekte.

Auf dem OpenSuse-Build-Service [10] und im Git-Repository für Fedora-Pakete [11] sind Spec-Dateien für nicht bei der Distribution mitgelieferten Programme oder Programmversionen zu finden.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 8 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 06/2015: Shell-Tools

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Grammatikprüfung in LibreOffice nachrüsten
Grammatikprüfung in LibreOffice nachrüsten
Tim Schürmann, 24.04.2015 19:36, 0 Kommentare

LibreOffice kommt zwar mit einer deutschen Rechtschreibprüfung und einem guten Thesaurus, eine Grammatikprüfung fehlt jedoch. In ältere 32-Bit-Versionen ...

Aktuelle Fragen

Zu wenig Speicherplatz auf /boot unter MATE
Patrick Obenauer, 25.05.2015 14:28, 1 Antworten
Hallo zusammen, ich habe Ubuntu 14.10 mit MATE 1.8.2 (3.16-37) mit Standardeinstellungen aufgese...
Konsole / Terminal in Linux Mint 17.1 deutsch
Dirk Resag, 09.05.2015 23:39, 12 Antworten
Hallo an die Community, ich habe vor kurzem ein älteres Notebook, Amilo A1650G, 1GB Arbeitsspe...
Admin Probleme mit Q4os
Thomas Weiss, 30.03.2015 20:27, 6 Antworten
Hallo Leute, ich habe zwei Fragen zu Q4os. Die Installation auf meinem Dell Latitude D600 verl...
eeepc 1005HA externer sound Ausgang geht nicht
Dieter Drewanz, 18.03.2015 15:00, 1 Antworten
Hallo LC, nach dem Update () funktioniert unter KDE der externe Soundausgang an der Klinkenbuc...
AceCad DigiMemo A 402
Dr. Ulrich Andree, 15.03.2015 17:38, 2 Antworten
Moin zusammen, ich habe mir den elektronischen Notizblock "AceCad DigiMemo A 402" zugelegt und m...