Simon Szustkowski

Ein Blog über alles, was mir gerade so durch den Kopf geht

Jan 4, 2013

Perlbrew auf dem Uberspace

So wunderbar wie Uberspace auch ist, es besteht dennoch das Problem, dass die vorinstallierten Pakete des darauf installierten CentOS Systems doch schon ziemlich alt sind.

Ich hatte letztens das Problem, dass ich ein Perl-Script hatte, was Deprecate.pm als Abhängigkeit hatte. Dieses Modul lässt sich nicht über CPAN mit Hilfe der local::lib installieren, es ist vielmehr Systembestandteil ab Perl 5.12. Dumm nur, dass auf den Uberspacehosts nur Perl 5.08 läuft.

Jonas von den Ubernauten empfahl mir dann den Einsatz von Perlbrew. Ähnlich wie RVM ermöglicht es die Installation von multiplen Perls samt CPANs in den Userspace des jeweiligen Users.

Allerdings geht das installieren von Perlbrew nicht ganz so einfach, wenn man vorher schon die local::lib installiert hat. Da man die local::lib aber mit Perlbrew eh nicht mehr braucht, sollte man sie vorher deaktivieren.

1

<code class="bash"><span class="line"><span class="nb">eval</span><span class="k">$(</span>perl -Mlocal::lib<span class="o">=</span>--deactivate-all<span class="k">)</span></span>

Außerdem sollte man die entsprechende Zeile aus seiner .bashrc entfernen.

1

<code class="bash"><span class="line"><span class="nb">eval</span><span class="k">$(</span>perl -I<span class="nv">$HOME</span>/perl5/lib/perl5 -Mlocal::lib<span class="k">)</span></span>

Es scheint bei den CPAN Environments so zu sein, dass die Config fest mit dem Perl-Interpreter verknüpft ist. Da die local::lib Config nicht mehr wichtig ist, und man die darüber installierten Module eh nicht mehr recyclen kann, kann man das Environment einfach erstmal rauskicken.

1

<code class="bash"><span class="line">rm -rf ~/.cpan </span>

Nun kann man mit der Installation von Perlbrew fortfahren.

1

<code class="bash"><span class="line">curl -kL http://install.perlbrew.pl | bash </span>

Das Perlbrew-Environment muss nun immer beim Anmelden geladen werden. Also folgenden Text in die .bashrc:

1234

<code class="bash"><span class="line"><span class="c"># Load all the perlbrew stuff</span></span><span class="line"><span class="k">if</span><span class="o">[[</span> -s <span class="s2">"$HOME/perl5/perlbrew/etc/bashrc"</span><span class="o">]]</span>; <span class="k">then</span></span><span class="line"><span class="k"></span><span class="nb">source</span><span class="s2">"$HOME/perl5/perlbrew/etc/bashrc"</span></span><span class="line"><span class="k">fi</span></span>

Nun kann eine aktuelle Version von Perl installiert werden, zB 5.16.2

12

<code class="bash"><span class="line">perlbrew install perl-5.16.2 </span><span class="line">perlbrew switch perl-5.16.2 </span>

Wenn nun die CPAN Shell aufgerufen wird, sollte die Erstkonfigurationsroutine durchlaufen. Der Output von perl -v sollte ebenfalls die neue Versionsnummer zurückliefern.

Übrigens: Die korrekte Shebang-Line für Scripte, die auch auf Perlbrew laufen sollen, lautet #!/usr/bin/env perl.

Weitere Infos hier: http://perlbrew.pl/