``Da hab' ich dann was eigenes'' (Linux-Magazin, November 1999)

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.

Der radikale Schnitt

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.

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

Referenzen

[1]
Joseph N. Hall, ``Effective Perl Programming'', S. 166, Addison-Wesley, 1998

[2]
Michael Schilli, Linux-Magazin 10/97, ``Alle Mann an die Pumpen!'', http://www.linux-magazin.de/ausgabe.1997.10/CPAN/cpan.html

[3]
Neue Module erzeugen in der Perl-FAQ: perldoc perlfaq7: ``How do I create a module?''

Michael Schilli

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