App::perlbrew - Mehrere Perl-Installationen im Heimatverzeichnis

Veröffentlicht von Thomas Fahle am (Permalink)

App::perlbrew - Manage perl installations in your $HOME von 劉康民 (Kang-min Liu) ermöglicht die einfache Installation (ohne root-Rechte) und Verwendung mehrerer Perls in unterschiedlichen Versionen und Konfigurationen in einem eigenem Verzeichnis.

Das noch sehr junge Projekt bietet eine einfache, leichtgewichtige Alternative zu den bekannten und bewährten Modulen local::lib und dem leistungsfähigerem Devel-PPPort - buildperl.pl - build/install perl distributions.

 

OSDC 2010 Lightning talk - Kang-min Liu perlbrew!

In diesem Video des Lightining Talks auf der OSCON 2010 stellt Kang-min Liu perlbrew kurz vor und erläutert warum er dieses Modul geschaffen hat.

 

Installation und grundlegende Konfiguration

App::perlbrew läßt sich entweder wie gehabt über die CPAN-Shell

cpan > install App::perlbrew

oder wie folgt

$ curl -LO http://xrl.us/perlbrew
$ chmod +x perlbrew

installieren. Anschließend steht das Kommandozeilen-Tool perlbrew zur Verfügung.

Die grundlegende Konfiguration erfolgt über die Option init - alle erforderlichen Dateien und Verzeichnisse werden als Default im Heimatverzeichnis im Ordner ~/perl5/perlbrew angelegt.

$ perlbrew init
 
 Perlbrew environment initiated, required directories are created under

     /home/bob/perl5/perlbrew

  Well-done! Congratulations! Please add the following line to the end
 of your ~/.bashrc

     source /home/bob/perl5/perlbrew/etc/bashrc
 ...

Wer perlbrew in ein anderes Verzeichnis installieren möchte, setzt dazu die Umgebungsvariable PERLBREW_ROOT:

$ export PERLBREW_ROOT=/opt/perlbrew
$ perlbrew install

Nach dem die o.g. Änderungen in der Datei ~/.bashrc ausgeführt wurden, aus der Shell abmelden und erneut einloggen, damit die Änderungen wirksam werden.

 

Mehrere Perls installieren

Mittels perlbrew install kann ein neues Perl installiert werden. Optionen, welche die Konfiguration des neuen Perls beeinflußen, werden über den Schalter -D= eingestellt. Die möglichen Optionen lassen sich der Datei INSTALL des jeweiligen Perls entnehmen.

Hier ein Perl 5.12.1 mit Threads:

$ perlbrew install perl-5.12.1 -D=usethreads

 Attempting to load conf from /home/bob/perl5/perlbrew/Conf.pm
 Fetching perl-5.12.1 as /home/bob/perl5/perlbrew/dists/perl-5.12.1.tar.gz
 Installing perl-5.12.1 into /home/bob/perl5/perlbrew/perls/perl-5.12.1
 This could take a while. You can run the following command on another shell to track the status:

  tail -f /home/bob/perl5/perlbrew/build.log

 (cd /home/bob/perl5/perlbrew/build; tar xzf /home/bob/perl5/perlbrew/dists/perl-5.12.1.tar.gz;cd /home/bob/perl5/perlbrew/build/perl-5.12.1;rm -f config.sh Policy.sh;sh Configure -de -Dprefix=/home/bob/perl5/perlbrew/perls/perl-5.12.1 -Dusethreads;make;make test && make install) >> '/home/bob/perl5/perlbrew/build.log' 2>&1 

 Installed perl-5.12.1 as perl-5.12.1 successfully. Run the following command to switch to it.

  perlbrew switch perl-5.12.1

Hier ein Perl 5.12.1 mit Standard-Optionen, also ohne Threads - über den Schalter -as wird ein passender Name für dieses Perl gewählt.

$ perlbrew install perl-5.12.1 -as perl-5.12.1-nothreads

 Attempting to load conf from /home/bob/perl5/perlbrew/Conf.pm
 Use the previously fetched perl-5.12.1.tar.gz
 Installing perl-5.12.1 into /home/bob/perl5/perlbrew/perls/perl-5.12.1-nothreads
 This could take a while. You can run the following command on another shell to track the status:

   tail -f /home/bob/perl5/perlbrew/build.log

 (cd /home/bob/perl5/perlbrew/build; tar xzf /home/bob/perl5/perlbrew/dists/perl-5.12.1.tar.gz;cd /home/bob/perl5/perlbrew/build/perl-5.12.1;rm -f config.sh Policy.sh;sh Configure -de -Dprefix=/home/bob/perl5/perlbrew/perls/perl-5.12.1-nothreads;make;make test && make install) >> '/home/bob/perl5/perlbrew/build.log' 2>&1 
 Installed perl-5.12.1 as perl-5.12.1-nothreads successfully. Run the following command to switch to it.

  perlbrew switch perl-5.12.1-nothreads
 

Hier ein Perl 5.12.1 mit Standard-Optionen, also ohne Threads, aber mit Debugging-Informationen.

$ perlbrew install perl-5.12.1 -D=DEBUGGING=both -as perl-5.12.1-nothreads-debug
 
 Attempting to load conf from /home/bob/perl5/perlbrew/Conf.pm
 Use the previously fetched perl-5.12.1.tar.gz
 Installing perl-5.12.1 into /home/bob/perl5/perlbrew/perls/perl-5.12.1-nothreads-debug
 This could take a while. You can run the following command on another shell to track the status:

  tail -f /home/bob/perl5/perlbrew/build.log

 (cd /home/bob/perl5/perlbrew/build; tar xzf /home/bob/perl5/perlbrew/dists/perl-5.12.1.tar.gz;cd /home/bob/perl5/perlbrew/build/perl-5.12.1;rm -f config.sh Policy.sh;sh Configure -de -Dprefix=/home/bob/perl5/perlbrew/perls/perl-5.12.1-nothreads-debug -DDEBUGGING=both;make;make test && make install) >> '/home/bob/perl5/perlbrew/build.log' 2>&1 

 Installed perl-5.12.1 as perl-5.12.1-nothreads-debug successfully. Run the following command to switch to it.

  perlbrew switch perl-5.12.1-nothreads-debug

Hier ein Perl 5.12.1 mit Threads und Debugging-Informationen.

$ perlbrew install perl-5.12.1 -D=DEBUGGING=both -D=usethreads -as perl-5.12.1-debug
 
 Attempting to load conf from /home/bob/perl5/perlbrew/Conf.pm
 Use the previously fetched perl-5.12.1.tar.gz
 Installing perl-5.12.1 into /home/bob/perl5/perlbrew/perls/perl-5.12.1-debug
 This could take a while. You can run the following command on another shell to track the status:

   tail -f /home/bob/perl5/perlbrew/build.log

 (cd /home/bob/perl5/perlbrew/build; tar xzf /home/bob/perl5/perlbrew/dists/perl-5.12.1.tar.gz;cd /home/bob/perl5/perlbrew/build/perl-5.12.1;rm -f config.sh Policy.sh;sh Configure -de -Dprefix=/home/bob/perl5/perlbrew/perls/perl-5.12.1-debug -DDEBUGGING=both -Dusethreads;make;make test && make install) >> '/home/bob/perl5/perlbrew/build.log' 2>&1 
 Installed perl-5.12.1 as perl-5.12.1-debug successfully. Run the following command to switch to it.

   perlbrew switch perl-5.12.1-debug

 

Zwischen den verschiedenen Perls hin- und herschalten

Zunächst werfen wir einen Blick auf das System-Perl:

$ perl -v

This is perl, v5.10.1 (*) built for i486-linux-gnu-thread-multi

Ein Übersicht aller installierten Perls liefert die Option installed

$ perlbrew installed
 perl-5.12.1
 perl-5.12.1-debug
 perl-5.12.1-nothreads
 perl-5.12.1-nothreads-debug
 /usr/bin/perl

Über die Option switch kann auf ein anderes Perl umgeschaltet werden. Da perlbrew die Umgebungsvariable PATH verändert, ist es zwingend erforderlich, die Shell über diese Änderung per hash -r (manchmal auch rehash) zu informieren.

$ perlbrew switch perl-5.12.1
$ hash -r 
$ perl -v

 This is perl 5, version 12, subversion 1 (v5.12.1) built for i686-linux-thread-multi

Zurück zum System-Perl gelangt man über die Option off:

$ perlbrew off
$ hash -r
$ perl -v

This is perl, v5.10.1 (*) built for i486-linux-gnu-thread-multi

 

CPAN-Module installieren

Wie bereits erwähnt, verändert perlbrew beim Switchen die Umgebungsvariable PATH und setzt zusätzlich das richtige cpan-Programm in diesen Pfad.

$ perlbrew switch perl-5.12.1-nothreads
$ hash -r

$ cpan 
cpan> install YAML
...
Appending installation info to /home/bob/perl5/perlbrew/perls/perl-5.12.1-nothreads/lib/5.12.1/i686-linux/perllocal.pod
cpan> quit

$ perlbrew off
$ hash -r

oder auch:

$ perlbrew switch perl-5.12.1-nothreads
$ hash -r

$ perl -MCPAN -e shell 
...

 

That's it.

 

Siehe auch

 

Weitere Posts