Seite wählen

RPM-Packaging: Die Bauanleitung

von | Jul 25, 2014 | Linux

RPM-Icon from www.softicons.com used under LGPL
In diesem Blogpost möchte ich mich nach dem Quelltext mit der zweiten wichtigen Datei bei Paketbau befassen, dem Spec-File. Ich tituliere dieses immer als Bauanleitung und üblicherweise ist die Erstellung dieses meinen Hauptarbeit beim Paketieren.
Das Spec-File lässt sich in verschiedene Abschnitte aufteilen: Header, Preparation, Clean, Build, Install, Scriptlets, Files und Changelog.
Der Header beschreibt das Paket inklusive Abhängigkeiten und definiert eigene lokale Makros. Viele dieser Beschreibungsfelder werden allerdings durch die unterschiedlichen Programme ausgewertet und aufbereitet, so dass es hier für fast alles feste Vorgaben gibt an die man sich halten sollte. Details finden sich in den Packaging-Guidelines des Fedora-Projekts. Wichtig ist es auch zu wissen, dass hierbei mit Verzweigungen gearbeitet werden kann, so dass ein Spec-File auch für verschiedene Versionen einer Distribution oder auch verschiedene Distributionen verwendet werden kann. Allerdings muss dann sehr auf den Überblick geachtet werden.
Preparation ist der Abschnitt in dem der Quelltext entpackt und gepatcht wird. Dieser wird wie beim letzten Mal geschrieben besonders dann kompliziert wenn sich der Quelltext nicht an bestimmte Konventionen hält.
Clean ist eigentlich optional, da das Aufräumen des Verzeichnisses in dem der Paketbauprozess stattfindet nicht standardmäßig aufgerufen wird.
Build ist die Sektion in der der Quelltext mittels make oder anderen Werkzeugen übersetzt wird und kann entfallen wenn es sich um Pakete handelt, die dies nicht benötigen.
Im Abschnitt Install wird anschließend die Installation in das temporäre Verzeichnis durchgeführt. Üblicherweise in dem dieses Verzeichnis als Variable DESTDIR gesetzt wird und die INSTALL_OPTS auf einen leeren String gesetzt werden.
Scriptlets können bei der Installation und Deinstallation von Paketen ausgeführt werden, wobei es über die Abfrage wie oft ein Paket vorhanden ist, möglich ist beispielsweise Update und Deinstallation zu unterscheiden. Hierbei ist es wichtig darauf zu achten, dass der Rückgabewert immer 0 ist, so dass auch bei fehlschlagenden Skripten die Installation möglich ist. Auch sollten keine Änderungen an der eigentlichen Installation vorgenommen werden oder Dienste (neu-)gestartet werden.
Im Abschnitt Files werden die Dateien aus der Installation in das Paket übernommen. Hier werden die Rechte, Besitzer und Gruppe vorgegeben, aber auch bestimmte Kennzeichnungen vorgenommen. Eine Datei kann beispielsweise als Dokumentation gekennzeichnet werden oder als Konfigurationsdatei. Aufpassen sollte man, dass Dateien nicht als zu einem Paket gehörend markiert werden, die bereits durch ein anderes Paket zur Verfügung gestellt werden.
Ein übersichtliches Beispiel in dem doch alles vorkommt stellt das Spec-File für unseren EventDB Correlator dar.
Beim nächsten Mal will ich dann ein paar Werkzeuge und Hilfsmittel für die Paketentwicklung vorstellen.

Dirk Götz
Dirk Götz
Principal Consultant

Dirk ist Red Hat Spezialist und arbeitet bei NETWAYS im Bereich Consulting für Icinga, Puppet, Ansible, Foreman und andere Systems-Management-Lösungen. Früher war er bei einem Träger der gesetzlichen Rentenversicherung als Senior Administrator beschäftigt und auch für die Ausbildung der Azubis verantwortlich wie nun bei NETWAYS.

0 Kommentare

Trackbacks/Pingbacks

  1. RPM-Packaging: Software Collections selbst gemacht › NETWAYS Blog - […] Und nicht nur die Verwendung ist sehr einfach auch die Erstellung ist sehr simpel. Der zusätzliche Aufwand ist die…

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mehr Beiträge zum Thema Linux

Kickstart your Laptop with Linux

Alle paar Jahre bekomme ich einen neuen Laptop bei Netways. Vor zwei Wochen war es wieder so weit und somit eine gute Gelegenheit mal wieder die Betriebssystem-Frage zu stellen. Die alte Frage also: "Welches Linux ist das Beste?". Also für mich ganz persönlich. Nicht...

Ansible – Testing roles with Molecule

Ansible is a widely used and a powerful open-source configuration and deployment management tool. It can be used for simple repetitive daily tasks or complex application deployments, therefore Ansible is able to cover mostly any situation. If used in complex or...

NETWAYS Support Collector Roadmap

Den Support Collector konnte ich bereits in meinem letzten Blogpost vorstellen. Für alle die den Beitrag verpasst haben, hier kurz umrissen was es ist: Bei dem Tool handelt es sich um einen von uns geschriebenen Datensammler, welche alle möglichen Support relevanten...