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
Zuletzt bearbeitet: Dezember 19, 2020

Autor

Kommentare

Kommentar verfassen

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