RPMS aus Perlmodulen mit cpanflute
Bisher war es für mich meist recht mühsam, ein RPM-Package für ein Perlmodul, das ich mir vom CPAN geholt hatte.
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 C
/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, daß 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 - A Perl module packager',
das auf dem CPAN gefunden werden kann.
David Fogarty machte mich darauf aufmerksam.