weidner/computer/linux/rpm/

Update (20141219)

Der nachfolgende Artikel ist schon sehr alt und nur noch aus historischen Gründen hier. Aktuell verwende ich cpanspec um RPMs aus Perl-Modulen zu erzeugen.

RPMS aus Perlmodulen mit cpanflute

Bisher war es für mich oft recht mühsam, ein RPM-Package für ein Perlmodul, das ich mir vom CPAN geholt hatte, zu finden.

2001 stieß ich aber auf das Programm /usr/lib/rpm/cpanflute aus dem Paket rpm-build (4.0.2), mit dem das zum Kinderspiel wird.

Der Aufruf

/usr/lib/rpm/cpanflute [Optionen] tar-Datei

Optionen: --email=text
          --create
          --n=string

Die Optionen

--email=text

Der Text wird im Spec-File des RPM beim %changelog Eintrag verwendet. Wenn dieser Parameter nicht angegeben ist, wird Anmeldename [at] redhat.com eingesetzt.

--create

Wenn diese Option angegeben wird, kommt zum %setup Makro im Spec-File die Option -c (Verzeichnis erzeugen) hinzu. Damit ist es möglich, problemlos RPMs aus Archiven zu erzeugen, die intern keinen Verzeichnisnamen enthalten, bei denen also alle Dateien im aktuellen Arbeitsverzeichnis ausgepackt würden.

-n=text

Diese Option wird (soweit ich das im Quellcode von cpanflute sehen konnte) nicht ausgewertet.

Hilfsverzeichnisse

Die mir vorliegende Version von cpanflute verwendet folgende (einkodierte) Hilfsverzeichnisse, die vor dem ersten Aufruf vorhanden sein müssen:

/tmp/cpan/junk
/tmp/cpan/temp

Ein Beispiel aus der Praxis

Ich habe das Perl Modul MIME-Base64 von CPAN geholt.

Dann erzeuge und installiere ich mir ein passendes RPM wie mit folgenden Schritten (Zeilen zwecks besserer Lesbarkeit umgebrochen):

$ /usr/lib/rpm/cpanflute --email=mathias@weidner.in-bad-schmiedeberg.de \
  MIME-Base64-2.12.tar.gz
$ rpm --rebuild /tmp/cpan/temp/perl-MIME-Base64-2.12-6.src.rpm
$ sudo rpm --Uvh redhat/RPMS/i386/perl-MIME-Base64-2.12-6.i386.rpm

Im ersten Schritt übergebe ich die tar-Datei an cpanflute und gebe meine E-Mail-Adresse für den %changelog Eintrag. cpanflute erzeugt ein fertiges Source RPM, d.h. ein Package, das die Originaldatei und die Anweisungen zum Übersetzen enthält.

Im zweiten Schritt übersetze ich das Source RPM und kann es dann schon installieren. Geht hierbei etwas schief, bleibt mir immer noch, die Spec-Datei zu ändern.

Wer mit rpm vertraut ist, dem fällt vielleicht auf, dass das Source RPM im Namen ein perl- vorangestellt hat und das die Releasenummer 6 ist. Das ist in cpanflute einprogrammiert.

Eine andere Möglichkeit, RPM-Pakete aus Perl-Modulen zu erzeugen, bietet cpan2rpm das auf dem CPAN gefunden werden kann. David Fogarty machte mich darauf aufmerksam.

Posted 2002-12-18
Tags: