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. |