Perl Umgebung mit Perlbrew

Wenn man die systemeigene Perlumgebung nicht angreifen möchte um Konflikte zu verhindert, empfehle ich Perlbrew http://perlbrew.pl/

Perlbrew Installation

  • einen “perlbrew” user erstellen
  • z.B. /opt/perlbrew mit korrekten Berechtigungen für User “perlbrew” erstellen
  • als Benutzer “perlbrew” anmelden (e.g. `su – perlbrew`) und in den angelegten Ordner wechseln (z.B. `cd /opt/perlbrew`)
  • PERLBREW_ROOT Umgebungsvariable als Benutzer “perlbrew” setzen: `export PERLBREW_ROOT=/opt/perlbrew`
  • Perlbrew als Benutzer “perlbrew” (!) installieren (andere Install-Kommandos siehe http://perlbrew.pl/): `wget -O – http://install.perlbrew.pl | bash`
  • Init-Command ausführen: `/opt/perlbrew/bin/perlbrew init`
  • `source /opt/perlbrew/etc/bashrc` in die .bashrc-Files (schönere Möglichkeit siehe weiter unten) bei den Benutzern hinzufügen, die im Stande sein sollen die Perlbrew-Umgebung zu verwenden.
  • logout/login damit alle Umgebungsvariablen nun gesetzt sind
  • Danach eine Perl-Version installieren. z.B.: `perlbrew install -v perl-5.14.4 -Dusethreads` oder `perlbrew install -v perl-5.14.4 –thread` oder `perlbrew install –thread stable`
    # mehr Infos mit `perlbrew –help`

CPAN module installieren

  • als Benutzer “perlbrew” anmelden
  • perl-Umgebung entsprechend wechseln (z.B. `perlbrew use perl-5.14.4`)
  • nochmal zur Sicherheit überprüfen ob wirklich gewechselt wurde – z.B. `which cpan` sollte nun /opt/perlbrew/perls/5.14.4/bin/cpan anzeigen.

Hinweise in welcher Umgebung man sich bewegt

Jeweils die .bashrc des jeweiligen Benutzers anpassen. Folgende Zeilen in die .bashrc des entsprechenden Benutzers hinzufügen:

DEBIAN

source /opt/perlbrew/etc/bashrc
 
if [[ -z "$PERLBREW_PERL" ]] ; then
 echo "Currently using system perl"
 export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$ '
 else
 echo "Currently using $PERLBREW_PERL"
 export PS1="${debian_chroot:+($debian_chroot)}\[\e[00;35m\]\u@\h\[\e[0m\]\[\e[01;37m\]:\[\e[0m\]\[\e[01;36m\]\w\\$\[\e[0m\]\[\e[00;37m\] \[\e[0m\]"
fi

ORACLE LINUX

* z.b. für root-user

source /opt/perlbrew/etc/bashrc
 
if [[ -z "$PERLBREW_PERL" ]] ; then
        echo "Currently using system perl"
        # for root user - in stylish red
        export PS1="\[\e[00;31m\][\[\e[0m\]\[\e[01;31m\]\u\[\e[0m\]\[\e[00;31m\]@\h:\[\e[0m\]\[\e[00;36m\]\w\[\e[0m\]\[\e[00;32m\]]\[\e[0m\]\[\e[00;36m\]\\$\[\e[0m\]\[\e[00;37m\] \[\e[0m\] "
        # for normal user - in green
        #export PS1="\[\e[00;32m\][\u@\h\[\e[0m\]\[\e[00;36m\]:\w\[\e[0m\]\[\e[00;32m\]]\[\e[0m\]\[\e[00;36m\]\\$\[\e[0m\]\[\e[00;37m\] \[\e[0m\]"
else
        echo "Currently using $PERLBREW_PERL"
        export PS1="\[\e[00;32m\][\[\e[0m\]\[\e[01;33m\]\u\[\e[0m\]\[\e[00;31m\]@\h:\[\e[0m\]\[\e[00;36m\]\w\[\e[0m\]\[\e[00;32m\]]\[\e[0m\]\[\e[00;36m\]\\$\[\e[0m\]\[\e[00;37m\] \[\e[0m\] "
fi

* z.b. perlbrew-user/normaler Benutzer

source /opt/perlbrew/etc/bashrc
 
if [[ -z "$PERLBREW_PERL" ]] ; then
        echo "Currently using system perl"
        # for root user - in stylish red
        #export PS1="\[\e[00;31m\][\[\e[0m\]\[\e[01;31m\]\u\[\e[0m\]\[\e[00;31m\]@\h:\[\e[0m\]\[\e[00;36m\]\w\[\e[0m\]\[\e[00;32m\]]\[\e[0m\]\[\e[00;36m\]\\$\[\e[0m\]\[\e[00;37m\] \[\e[0m\] "
        # for normal user - in green
        export PS1="\[\e[00;32m\][\u@\h\[\e[0m\]\[\e[00;36m\]:\w\[\e[0m\]\[\e[00;32m\]]\[\e[0m\]\[\e[00;36m\]\\$\[\e[0m\]\[\e[00;37m\] \[\e[0m\]"
else
        echo "Currently using $PERLBREW_PERL"
        export PS1="\[\e[00;32m\][\[\e[0m\]\[\e[01;33m\]\u\[\e[0m\]\[\e[00;31m\]@\h:\[\e[0m\]\[\e[00;36m\]\w\[\e[0m\]\[\e[00;32m\]]\[\e[0m\]\[\e[00;36m\]\\$\[\e[0m\]\[\e[00;37m\] \[\e[0m\] "
fi

Anpassung von /opt/perlbrew/etc/bashrc

im /opt/perlbrew/etc/bashrc die Zeile `source ~/.bashrc` bei jedem “case”-Fall (ausser dem letzten) hinzufügen. Bei “use” und “switch” im else-Zweig am Ende und bei “off” und “switch-off” auch am Ende. Somit sieht man bei jedem Wechsel welche Perl-Version gerade benutzt wird. Betroffener Ausschnitt von der bashrc:

[...]
    case $1 in
        (use)
            if [[ -z "$2" ]] ; then
                echo -n "Currently using ${PERLBREW_PERL:-system perl}"
                [ -n "$PERLBREW_LIB" ] && echo -n "@$PERLBREW_LIB"
                echo
            else
                __perlbrew_set_env "$2"
                exit_status="$?"
                if [[ $exit_status -eq 0 ]]
                then
                    __perlbrew_set_path
                fi
 
                # so we see a notification in the shell
                source ~/.bashrc
            fi
            ;;
 
        (switch)
              if [[ -z "$2" ]] ; then
                  command perlbrew switch
              else
                  perlbrew use $2
                  exit_status=$?
                  if [[ ${exit_status} -eq 0 ]]; then
                      __perlbrew_reinit $2
                  fi

                  # so we see a notification in the shell
                  source ~/.bashrc
              fi
              ;;
 
        (off)
            __perlbrew_deactivate
            echo "perlbrew is turned off."

            # so we see a notification in the shell
            source ~/.bashrc
            ;;
 
        (switch-off)
            __perlbrew_deactivate
            __perlbrew_reinit
            echo "perlbrew is switched off."
 
            # so we see a notification in the shell
            source ~/.bashrc
            ;;
 
        (*)
            command perlbrew $short_option "$@"
            exit_status=$?
            ;;
    esac
[...]

Verwendung einer installierten Perl-Umgebung

wenn perlbrew und eine entsprechende perl-Version installiert ist, kann man dann entweder ein Script mit entsprechender Shebang erstellen z.b.

#!/opt/perlbrew/perls/perl-5.20.2/bin/perl

oder man bastelt noch ein bash-Script rundherum. Eventuell in der Shebang noch ein –login dranhängen

#!/bin/bash
 
## These 3 lines are mandatory.
export PERLBREW_ROOT=/opt/perlbrew
export PERLBREW_HOME=/tmp/.perlbrew
source ${PERLBREW_ROOT}/etc/bashrc
 
## Do stuff with 5.14.4
perlbrew use 5.14.4
perl-script1.pl
perl perl-script2.pl

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.