Die Installation neuer perl
-Versionen oder Zusatzmodule erfordert
normalerweise Root-Rechte. Heute erkunden wir Wege, als
``sterbliche'' Benutzer unsere eigenen Installationen zu verwalten.
Jede Woche ein neues Modul, alle Monate eine neue perl
-Version:
Wenn der Systemadministrator mit anderen Dingen beschäftigt
ist und sich außerdem mal wieder schrecklich wichtig macht und
trotz angebotener Alkoholika nicht mit dem Root-Passwort herausrückt,
müssen wir eben unser eigenes perl
spinnen, eines, das sich
mit ganz normalen User-Rechten installieren und aktualisieren lässt.
Am einfachsten geht dies mit einer vollkommen eigenständigen
lokalen perl
-Installation: Die Perl-Homepage auf www.perl.com
verweist ganz oben auf die zwei aktuellsten Versionen: 5.005_03 als
derzeit stabilen Release und 5.005_61 für experimentierfreudige
Naturen, denen die allerneuesten Gimmicks so wichtig sind, dass sie
auch gelegentliche Crashs gerne in Kauf nehmen.
Um nun perl
nicht in den sonst üblichen Verzeichnissen
/usr
oder /usr/local
zu installieren, sondern eine lokale Installation in, zum Beispiel,
/home/mike/PERL
anzulegen, bereitet man nach dem Auspacken mit
tar zxfv stable.tar.gz cd perl5.005_03
mit dem Aufruf
./Configure -d -D prefix=/home/mike/PERL
die Installation des perl
-Executables in /home/mike/PERL/bin/perl
vor.
Der Schalter -d
läßt Configure
die Standard-Einstellungen
übernehmen, was auf Linux-Systemen fast immer zum Erfolg führt.
Die Bibliotheken wandern nach /home/mike/PERL/lib/perl5
, die
Manualseiten landen in /home/mike/PERL/man
.
make make install
macht die Installation komplett, ab dann sollte die erste Zeile in benutzten Skripts, der sogenannte ``Shebang'', so aussehen:
#!/home/mike/PERL/bin/perl -w
und schon verwenden die Skripts nicht nur das neue, private perl
-Executable,
sondern ziehen auch die vielen Bibliotheken, die damit einhergehen, aus
der privaten Installation.
Damit auch perl
-Aufrufe von der Kommandozeile und speziell auch
die von Dokumentationsprogrammen wie perldoc
und -filtern wie pod2man
auf die neue private Version zugreifen, sollte der Pfad der lokalen
perl
-Installation dem $PATH der benutzten Shell vorangestellt werden.
Für die Bash-Shell erledigt dies
export PATH=/home/mike/PERL/bin:$PATH
und für unbekehrbare C-Shell-Jünger lautet der Aufruf
setenv PATH /home/mike/PERL/bin:$PATH
Beide sollten in .bashrc
bzw. .cshrc
landen, damit die
Werte beim Einloggen automatisch gesetzt werden. Bringt der
anschließende Aufruf von
perl -v
etwas wie
This is perl, version 5.005_03 built for i686-linux Copyright 1987-1999, Larry Wall ...
zu Tage, ist der Kaas biss'n und auch die CPAN-Shell zum eleganten Installieren wird, mit
perl -MCPAN -eshell
aufgerufen, durch den normalen Konfigurationsprozeß laufen und automatisch mit den richtigen Installationsverzeichnissen aufwarten (siehe [2]). Um die wichtigsten Module vom CPAN zu laden und zu installieren, hat sich die Befehlsfolge
install Bundle::libnet install Bundle::CPAN install MD5 install Bundle::LWP install HTML::Parser install HTML::Tree install Archive::Tar install GD install Chart
in der CPAN-Shell bewährt.
Ist die vorhandene Perlinstallation grob richtig und im 5.005-Bereich
(neulich habe ich wieder einen getroffen, der noch ein Steinzeit-Perl-4
benutzte und sich über die Fehlermeldungen wunderte),
und fehlen nur topmodische Zusatzmodule, geht's auch einfacher.
Eine private perl
-Installation pflanzt auch 48 Megabytes ins
Home-Verzeichnis jedes Benutzers. Wer sich und dem Systemadministrator
das ersparen will, oder wer bei einem Hosting-Service nur über
50 MB Plattenplatz verfügt,
der definiert sich elegant zusätzliche
Modulverzeichnisse.
Ein mit
perl Makefile.PL LIB=/home/mike/perl_modules make make test make install
installiertes neues Modul My::Module
landet problemlos im angegebenen Unterverzeichnis.
Ob's funktioniert, kann man sehr leicht selbst ausprobieren, indem man, wie um
ein neues Modul zu schreiben, das für die heiligen Hallen des
CPAN bestimmt wäre, mit
h2xs -XA -n My::Module
die notwendigen Templates anlegt (siehe [3]). Der Aufruf erzeugt
die Verzeichnisse
My
und My/Module
an und legt in letzeres folgende Dateien hinein:
Changes # Änderungen zwischen Versionen MANIFEST # Listet Dateien der Distribution auf Makefile.PL # Makefile-Erzeuger Module.pm # Modul-Template test.pl # Testskript-Template
Das oben schon beschriebene perl Makefile.PL
mit dem LIB-Parameter
erzeugt ein Makefile und ein nachfolgendes make install
plaziert alle
benötigten Dateien in den Verzeichnissen unter /home/mike/perl_modules
.
Um nun das frisch installierte Modul in einem neuen Skript zu verwenden,
muß man, wie in [1] beschrieben, dem use My::Module
ein
use lib "/home/mike/perl_modules";
voranstellen und schon stöbert perl
auch die
Module in den Untiefen des neuen Modul-Verzeichnisses auf.
Tausend Dank diesmal an Andreas König -- er hat mich davor bewahrt, einen Schmarr'n zu schreiben, wegen dem ich vier Wochen lang hätte die Eselsmütze tragen müssen.
Apropos König:
Wer Andreas Königs schicke CPAN-Shell zum Installieren schätzt,
kann diese auch für lokalen Gebrauch einrichten:
Wenn das benutzte perl
im Hauptpfad schon ein CPAN-Modul
führt, kann man es nicht direkt mit
perl -MCPAN -eshell
aufrufen, da für das Cache-Verzeichnis und die Lock-Datei
root
-Rechte erforderlich sind. Vielmehr holt man einfach
CPAN-1.50.tar.gz
vom CPAN und entpackt es. Installiert wird im lokalen
Pfad mit
perl Makefile.PL LIB=/home/mike/perl_modules
wie oben beschrieben und make install
.
Der Aufruf der CPAN-Shell muß dann mit
perl -e'use lib "/home/perlmeis/perl-modules"; use CPAN; shell'
erfolgen und die Frage nach zusätzlichen Parametern für das
Kommando perl Makefile.PL
richtig beantwortet werden:
Parameters for the 'perl Makefile.PL' command? [] > LIB=/home/mike/perl_modules
Und schon steht die CPAN-Shell zum eleganten und zeitsparenden Installieren auch für die private Modulsammlung zur Verfügung. Gestartet wird sie immer mit der oben abgedruckten Monsterkommandozeile, damit Perl nicht die falsche Konfiguration der CPAN-Shell aus dem Hauptpfad übernimmt.
Stellt man auch noch die Environmentvariable PERL5LIB
auf das
Verzeichnis mit der privaten Modulsammlung ein, z.B. mit
export PERL5LIB=/home/mike/perl_modules
in der Bash-Shell,
dann findet auch der praktische Manualseitenhervorzauberer perldoc
die neuen Module.
Schluß für heute -- schafft ein, zwei, viele private Perlinstallationen!
perldoc perlfaq7
: ``How do I create a module?''
Michael Schilliarbeitet als Software-Engineer bei Yahoo! in Sunnyvale, Kalifornien. Er hat "Goto Perl 5" (deutsch) und "Perl Power" (englisch) für Addison-Wesley geschrieben und ist unter mschilli@perlmeister.com zu erreichen. Seine Homepage: http://perlmeister.com. |