Home

Info

Artikel

Produkte

Stickers

UserGroups

Events

Bücher


Suchen:



Addon
Jetzt bestellen!
> Kombiabo
> Jahres-CD 1999

Perl-Snapshot

Da hab' ich dann was eigenes!

von Michael Schilli


Die Installation neuer Perl-Versionen oder Zusatzmodule erfordert normalerweise Root-Rechte. Heute erkunden wir Wege, als normalterbliche 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.

Der radikale Schnitt

Am einfachsten geht dies mit einer vollkommen eigenständigen lokalen Perl-Installation: Die Perl-Homepage auf http://www.perl.com verweist ganz oben auf die zwei aktuellsten Versionen: 5.005_03 als derzeit stabile 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 z.B. /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.

Module -- sonst nix!

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 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 den 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 zudem 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!

Infos

[1] Joseph N. Hall: Effective Perl Programming, S. 166, Addison-Wesley, 1998
[2] Michael Schilli: Alle Mann an die Pumpen, Linux-Magazin 10/1997, /ausgabe.1997.10/CPAN/cpan.html
[3] Neue Module erzeugen in der Perl-FAQ: perldoc perlfaq7: How do I create a module?

Der Autor

Michael Schilli arbeitet als Web-Engineer für AOL/Netscape in Mountain View, Kalifornien. Er ist Autor des 1998 bei Addison-Wesley erschienenen (und 1999 für den englischsprachigen Markt als Perl Power herausgekommenen) Buches GoTo Perl 5. Zu erreichen ist er unter michael@perlmeister.com oder http://perlmeister.com.

Copyright © 1999 Linux-Magazin Verlag