![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
||||||||
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|||||||
![]() |
|||||||
![]() |
|
||||||
![]() |
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 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.
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