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
- App::perlbrew - Manage perl installations in your $HOME
- gugod's App-perlbrew at master - GitHub
- perlbrew: $HOME perl installation made easy
- Testing Perl 5.12.0 RC 1 with App::perlbrew - Perl Pub
- 跳ね込むの日記 - hanekomu's Perl blog - Modern Perl administration tools
- Chris Prather: Brewing Up a Storm
- Rvm and Perlbrew
- local::lib
- Devel-PPPort - buildperl.pl - build/install perl distributions
- How_to_build_136_versions_of_Perl