Auf unseren Servern stellen wir dir die Programmiersprache Perl in der Version 5 bereit. Wenn du die exakte Version wissen möchtest, gib bitte auf dem System, auf dem sich dein Uberspace befindet, perl -v ein.
Der Pfad zu Perl ist /usr/bin/perl. In den meisten Scripts befindet sich ohnehin diese Angabe im Kopf der Datei. Sollte hier wider Erwarten eine andere Angabe stehen, ändere jene bitte auf /usr/bin/perl, oder bitte den Autor, in der nächsten Version am besten direkt /usr/bin/env perl anzugeben, was inzwischen als der bevorzugte Weg angesehen wird.
Wir stellen dir eine Vielzahl von Perl-Modulen fertig installiert bereit. Die Liste der auf deinem System verfügbaren Module kannst du wie folgt einsehen:
[erich@xenon ~]$ rpm -qa | grep ^perl
perl-Digest-SHA1-2.11-1.2.1
perl-HTML-Parser-3.55-1.fc6
perl-File-Copy-Recursive-0.38-1.el5.rf
[...]
perl-rrdtool-1.4.4-1.el5.rf
perl-Test-Script-1.05-1.el5.rf
perl-Curses-1.28-1.el5.rf
Wenn dir eins fehlt, sag uns Bescheid; möglicherweise können wir es global für alle User bereitstellen. Ansonsten besteht immer die Möglichkeit, speziell innerhalb deines Uberspaces einzelne Perl-Module mittels locallib zu installieren. Auf diese Weise ist es auch möglich, neuere Versionen von bereits global installierten Modulen zu benutzen, für die wir aus offiziellen Paketquellen bisher kein Update beziehen konnten.
Mit Hilfe von local::lib kannst du mit wenig Aufwand eine Umgebung einrichten, in der du selbstständig CPAN-Module installieren kannst. Es braucht einmalig einen gewissen Aufwand, denn das globale, zur Linux-Distribution gehörende Perl 5.8 bringt ein cpan mit, das für local::lib aber zu alt ist - aber auch nicht aktualisiert werden kann, weil es zum Core-RPM von Perl gehört. Aber: Alles kein Problem.
Zunächst gehe bitte auf http://search.cpan.org/dist/local-lib/ und suche dir dort die neueste Version von local::lib. Du kannst sie dann direkt in dein Home-Verzeichnis herunterladen und entpacken:
[margitta@radon ~]$ curl --silent --location http://search.cpan.org/CPAN/authors/id/A/AP/APEIRON/local-lib-1.008004.tar.gz | tar -xzf -
[margitta@radon ~]$ cd local-lib-1.008004/
[margitta@radon local-lib-1.008004]$
Anschließend folgen wir dem Abschnitt The bootstrapping technique der Dokumentation:
[margitta@radon local-lib-1.008004]$ perl Makefile.PL --bootstrap
Attempting to create directory /home/margitta/perl5
ExtUtils::MakeMaker version 6.31 required--this is only version 6.30.
BEGIN failed--compilation aborted.
ExtUtils::Install version 1.43 required--this is only version 1.33.
BEGIN failed--compilation aborted.
...
Checking if your kit is complete...
Looks good
Writing Makefile for local::lib
Du kannst dir währenddessen ruhig erstmal einen Kaffee machen: local::lib wird feststellen, dass ihm die Hälfte fehlt oder zu alt ist (Perl 5.8 ist immerhin schon viele Jahre alt … aber eben bei CentOS immer noch das, was als „stable“ angesehen wird). Dann, wenn's fertig ist:
[margitta@radon local-lib-1.008004]$ make
cp lib/POD2/PT_BR/local/lib.pod blib/lib/POD2/PT_BR/local/lib.pod
...
[margitta@radon local-lib-1.008004]$ make install
Installing /home/margitta/perl5/lib/perl5/lib/core/only.pm
...
Appending installation info to /home/margitta/perl5/lib/perl5/x86_64-linux-thread-multi/perllocal.pod
Jetzt kommt noch der entscheidende Schritt: Du musst in deiner .bashrc (wenn du eine andere Shell wie die zsh benutzt, dann entsprechend in deren Konfiguration) eine Zeile einfügen, nämlich diese hier:
eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)
Anschließend musst du die .bashrc neu einlesen, damit deine Umgebung aktualisiert wird (alternativ kannst du dich auch einfach neu einloggen). Die beiden Schritte wären also:
[margitta@radon local-lib-1.008004]$ echo 'eval $(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)' >> ~/.bashrc
[margitta@radon local-lib-1.008004]$ . ~/.bashrc
Das war's! Damit sind jetzt alle möglichen Umgebungsvariablen gesetzt worden - so sieht das aus, wenn du mal schnell einen Blick darauf werfen möchtest:
[margitta@radon local-lib-1.008004]$ set | grep perl5
PATH=/home/margitta/perl5/bin:/package/host/localhost/php- 5.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/var/qmail/bin:/opt/syslog-ng/bin:/opt/syslog-ng/sbin:/home/margitta/bin
PERL5LIB=/home/margitta/perl5/lib/perl5/x86_64-linux-thread-multi:/home/margitta/perl5/lib/perl5
PERL_LOCAL_LIB_ROOT=/home/margitta/perl5
PERL_MB_OPT='--install_base /home/margitta/perl5'
PERL_MM_OPT=INSTALL_BASE=/home/margitta/perl5
Perl ist damit nun also instruiert, innerhalb deines ~/perl5-Verzeichnisses auch nach Modulen und Programmen zu suchen. Alle Programme, die du auf der Shell ausführst, profitieren automatisch davon. Wenn du aber CGI- oder FastCGI-Scripts einsetzt, bedenke, dass der Apache-Webserver direkt Perl aufruft und nicht erst die Shell, die dann Perl aufruft - dort sind dann die Umgebungsvariablen nicht gesetzt. Aber kein Problem: Ein einfaches …
use local::lib;
… im Script selbst sorgt dafür, dass das betreffende Script automatisch auch in deinem Home-Verzeichnis nach Perl-Modulen sucht.