Et vakkert lite verktøy: cpanflute2 fra RPM::Specfile

CPAN er The Comprehensive Perl Archive Network, med perl-moduler for alt mellom himmel og jord, og sannsynligvis mange andre steder også. CPAN er flott. CPAN er fantastisk. Det er ikke til å tro hva folk har forfattet perl-moduler om. Ofte er de dessuten ekstremt nyttige.

Mange CPAN-moduler avhenger av hverandre. For å gjøre det enkelt for utviklere finnes det derfor et CPAN-shell som automatisk kan laste ned, bygge og installere de modulene man trenger. Fint og flott.

For utviklerne.

For en stakkars systemadministrator er det et aldri så lite mareritt, særlig når maskiner skal byttes ut, eller operativsystemet skal oppgraderes. Hvilke moduler er installert? Hvilke moduler er de avhengige av?

Heldigvis har også CPAN-gjengen funnet ut dette og laget RPM::Specfile. Dette er en interessant modul i seg selv, men den har med seg i pakka et flott lite verktøy som heter cpanflute2. Hva gjør cpanflute2? Det kan illustreres enklest med et lite eksempel:

La oss anta at du trenger modulen HTML::TableParser. Du skulle ønske den fantes som RPM-pakke i din distribusjon, men det gjør den ikke. I stedet kan du bruke cpanflute2:

$ wget ftp://ftp.uninett.no/pub/CPAN/modules/by-module/HTML/HTML-TableParser-0.34.tar.gz
13:14:45 (512 KB/s) - `HTML-TableParser-0.34.tar.gz' saved [47156]

$ cpanflute2 HTML-TableParser-0.34.tar.gz
Wrote: ./perl-HTML-TableParser-0.34-8.src.rpm
Executing(--clean): /bin/sh -e /home/ingvar/rpm/BUILD/rpm-tmp.24385
+ umask 022 + cd /tmp/qffG4FMG2R
+ rm -rf HTML-TableParser-0.34
+ exit 0

$ rpmbuild --rebuild perl-HTML-TableParser-0.34-8.src.rpm
Installing perl-HTML-TableParser-0.34-8.src.rpm
Executing(%prep): (...)
Executing(%build): (...)
Executing(%install): (...)
Wrote: /home/ingvar/rpm/RPMS/noarch/perl-HTML-TableParser-0.34-8.noarch.rpm
Executing(%clean): (...)

$ rpm -qpl ~/rpm/RPMS/noarch/perl-HTML-TableParser-0.34-8.noarch.rpm
/usr/lib/perl5/site_perl/5.8.8/HTML
/usr/lib/perl5/site_perl/5.8.8/HTML/TableParser.pm
/usr/share/doc/perl-HTML-TableParser-0.34
/usr/share/doc/perl-HTML-TableParser-0.34/Changes
/usr/share/doc/perl-HTML-TableParser-0.34/LICENSE
/usr/share/doc/perl-HTML-TableParser-0.34/README
/usr/share/man/man3/HTML::TableParser.3pm.gz

Fint, ikke sant?

Merk følgende VIKTIGE poeng.

  • cpanflute2 er ikke så veldig magisk. Den takler ikke pakker som avviker fra det som anses som standard byggemetode i CPAN-moduler.
  • Noen modul-forfattere gjør kreative ting under vanlig ‘make’, som f.eks å legge ting under /usr/lib uten at noen har kalt ‘make install’. Bygg derfor ALLTID pakken som en ikke-priviligert bruker (altså IKKE root). Se f.eks http://users.linpro.no/ingvar/rpm.html om du ikke vet hvordan du gjør dette.

RPM::Specfile er inkludert i Fedora under navnet perl-RPM-Specfile. Pakker for andre RedHat-derivater finner du f.eks hos Dag Wieers, http://dag.wieers.com/rpm/packages.php

Leave a Reply