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
oderperlbrew install -v perl-5.14.4 --thread
oderperlbrew install --thread stable
# mehr Infos mitperlbrew --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
Kommentare