Instalacja modułów perla

Z openSUSE wiki

Nie sposób znaleźć dystrybucję zawierającą wszystkie moduły perla, a ich kompilowanie ręcznie jest niewygodne i zostawia bałagan w systemie plików. Na szczęście istnieje skrypt cpan2rpm, który potrafi stworzyć pakiety rpm z archiwów zawierających źródła. Można go używać na wiele sposobów, w tym artykule zostaną przedstawione dwa najprzydatniejsze.

Spis treści


Uwaga.png Uwaga: Ten skrypt może zostać użyty tylko do modułów perla!
Wskazówka.png Wskazówka: Ponad 2000 modułów perla gotowych do instalacji można pobrać z repozytorium devel:languages:perl.

Podanie nazwy modułu

Wystarczy podać nazwę modułu, jako argument:

cpan2rpm GStreamer

-- cpan2rpm - Ver: 2.028 --
Signatures not set up
Upgrade check
Fetch: HTTP

-- module: GStreamer --
Found: GStreamer-0.09.tar.gz
At: http://search.cpan.org//CPAN/authors/id/T/TS/TSCH
Retrieving URL
Metadata retrieval
Tarball extraction: [/usr/src/packages/SOURCES/GStreamer-0.09.tar.gz]
Unable to build module, the following dependencies have failed:
  ExtUtils::Depends >= 0.205
  Glib >= 1.120
  ExtUtils::PkgConfig >= 1.07
Stopped at /usr/bin/cpan2rpm line 491.
Can't return to /tmp/y9uppvyp7Z/GStreamer-0.09 from /tmp/y9uppvyp7Z (No such file or directory) at /usr/lib/perl5/5.8.8/File/Temp.pm line 898
END failed--call queue aborted.
-- Done --

Jak widać, skrypt potrafi sam znaleźć oraz sprawdzić, czy zależne moduły są zainstalowane - w tym wypadku nie ma ich. Na szczęście pakiety RPM z tymi modułami można znaleźć w repozytorium.

Pora na następny przykład, ale tym razem na module Readonly - wygodniejszym sposobie na tworzenie stałych w perlu niż wbudowana pragma "use constant":

cpan2rpm Readonly
(kilkadziesiąt linijek niżej)
RPM: /usr/src/packages/RPMS/noarch/perl-Readonly-1.03-1.noarch.rpm
SRPM: /usr/src/packages/SRPMS/perl-Readonly-1.03-1.src.rpm
-- Done --

Teraz wystarczy zainstalować utworzony przed chwilą pakiet pakiet:

rpm -Uvh /usr/src/packages/RPMS/noarch/perl-Readonly-1.03-1.noarch.rpm

Podanie scieżki do pliku

Co jednak zrobić, jeśli zamiast dostępu do internetu masz tylko moduł na dysku twardym? Na to też istnieje sposób:

cpan2rpm Readonly-1.03.tar.gz
(kilkadziesiąt linijek niżej)
RPM: /usr/src/packages/RPMS/noarch/perl-Readonly-1.03-1.noarch.rpm
SRPM: /usr/src/packages/SRPMS/perl-Readonly-1.03-1.src.rpm
-- Done --

Uwagi końcowe

Jak widać po listingach, wszystkie operacje zostały przeprowadzone na koncie root - to nie dobrze, jedyną przeprowadzoną operacją powinno być zainstalowanie gotowego pakietu RPM. Na szczęście można używać tego skryptu na koncie zwykłego użytkownika - wystarczy przygotować się w sposób opisany w innym artykule.

Więcej sposobów użycia oraz informacji można znaleźć w na stronie podręcznika systemowego poświęconej cpan2rpm.