Sancta Simplicitas

Das OpenSuse-Spec-File ersetzt beinahe alle Shell-Befehle für das Kompilieren des Quellcodes durch Makros. Vieles lässt sich für ein Paket vereinfachen, das immer noch funktioniert, allerdings nicht mehr die Qualitätsnorm für OpenSuse-Pakete erfüllt [4]. Listing 3 enthält daher eine simplere Fassung. Orientieren Sie sich an dieser, wenn Sie Ihre erste eigene Spec-Datei erstellen.

Listing 3

[bis inklusive %description-Block wie oben]
%prep
%setup -q
%patch0
%build
autoreconf -fi
%configure
make
%install
%makeinstall
%files
%{_bindir}/galculator
%{_datadir}*

Das Makro %setup -q in der Sektion %prep entpackt das Archiv und wechselt mit cd in das Quellcode-Verzeichnis. Der Autoconf-Aufruf unter %build ist ein ausgesprochener Sonderfall, bedingt durch Veränderungen am Makefile-Template in Patch0. %configure ruft ./configure auf, fügt jedoch eine Vielzahl von auf das OpenSuse-System abgestimmter Optionen hinzu. Wer die im Detail sehen möchte, kann sie in der RPM-Konfigurationsdatei /usr/lib/rpm/macros nachlesen.

Zum Kompilieren des Programms genügt das altbekannte make, %__make in der Suse-Originalversion expandiert schlicht zu /usr/bin/make. Die Make-Option %{?jobs:-j%{jobs}} sorgt dafür, dass dem Build-Prozess im Rechner-Cluster des OpenSuse-Build-Service eine angemessene Zahl an CPUs zur Verfügung stehen. Für lokale Builds ist sie nicht erforderlich.

Das %install-Feld enthält lediglich eine unverzichtbare Zeile: Jene mit %makeinstall, die den Konsolenbefehl make install vertritt. Dieser blanke Aufruf genügt beim Bauen von Paketen allerdings nicht. Der Befehl muss hier make DESTDIR=%{buildroot} install lauten, sonst versucht Make die Dateien an die für die endgültige Installation vorgesehenen Stellen zu schreiben, etwa nach /usr/bin/ oder /usr/share/, was mit User-Rechten fehlschlägt.

Das Setzen der Umgebungsvariablen DESTDIR weist make install an, die Dateien relativ zum dort genannten Verzeichnis zu installieren. %{buildroot} gibt ein für Paketnamen und -version eindeutiges Verzeichnis unterhalb von ~/rpmbuild/BUILD/ zurück, %makeinstall kürzt den Aufruf ab.

Die Abschnitte %post und %postun enthalten Makros, die der Paketmanager beim Installieren und Deinstallieren des Pakets ausführen soll. Bedingt durch das Makro %if 0%{?suse_version} >= 1140 aktualisieren sie im Beispiel die Startmenüs und den Icon-Cache für Suse-Versionen ab 11.4 – Feinheiten, die Anfänger ungestraft ignorieren dürfen.

Inhaltsverzeichnis

Das mehrzeilige Feld %files darf in keiner Spec-Datei fehlen, denn ohne es bleibt das binäre RPM leer: Rpmbuild packt beim Paketbau nur die dort zeilenweise gelisteten Dateien ein. Der *-Operator funktioniert dabei als Wildcard.

Die vereinfachte Version des %files-Felds benutzt nur die zwei Makros %{_bindir} (Verzeichnis für ausführbare Dateien) und %{_datadir} (share/-Verzeichnis), die passend zum mit %configure gesetzten Prefix zu usr/bin/ und usr/share/ unterhalb des per DESTDIR angegeben Pseudo-Root /home/~/rpmbuild/BUILDROOT/galculator-1.3.4-18.1.2.i386/ expandieren.

Die vereinfachte Dateiliste packt die Hauptprogrammdatei galculator und alle von make install unter share/ abgelegten Datei in das RPM-Paket. Das Original-Spec pickt gezielt die Unterverzeichnisse aus share/ heraus. Das ist im Hinblick auf Updates sicherer: Rpmbuild meldet dann neu hinzugekommene Dateien zunächst mit dem Fehler unpackaged files found. Der Maintainer kann prüfen, ob diese mit anderen Paketen in Konflikt stehen. Weitere Tricks zur %files-Sektion der OpenSuse-Spec-Datei erläutert ein englischsprachiger Artikel auf OpenSuse.org [5].

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 12/2014: ANONYM & SICHER

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

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

Nach Ubdates alles weg ...
Maria Hänel, 15.11.2014 17:23, 4 Antworten
Ich brauche dringen eure Hilfe . Ich habe am wochenende ein paar Ubdates durch mein Notebook von...
Brother Drucker MFC-7420
helmut berger, 11.11.2014 12:40, 1 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu 14.04-Nutzer...
Treiber für Drucker brother MFC-7420
helmut berger, 10.11.2014 16:05, 2 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu12.14-Nutzer u...
Can't find X includes.
Roland Welcker, 05.11.2014 14:39, 1 Antworten
Diese Meldung erhalte ich beim Versuch, kdar zu installieren. OpenSuse 12.3. Gruß an alle Linuxf...
DVDs über einen geeigneten DLNA-Server schauen
GoaSkin , 03.11.2014 17:19, 0 Antworten
Mein DVD-Player wird fast nie genutzt. Darum möchte ich ihn eigentlich gerne abbauen. Dennoch wür...