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/bashrcin 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 -Dusethreadsoderperlbrew install -v perl-5.14.4 --threadoderperlbrew 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 cpansollte 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