Perlmodule installieren¶
In Systemen mit besonderen Anforderungen kann es nötig sein, weitere Perlmodule zu installieren. Glücklicherweise verfügt Perl über ein exzellentes Paket-Repository, das nahezu alle Anforderungen befriedigt. Sie finden es unter der Bezeichnung CPAN unter https://metacpan.org/.
Es wird empfohlen, CPAN-Module mit dem Befehlszeilenclient cpanm
zu installieren. cpanm
ist auf vielen Systemen bereits installiert. Sollte dies bei Ihnen nicht der Fall sein, finden Sie weitere Informationen unter https://metacpan.org/pod/App::cpanminus.
Alternativ sind viele Perl-Module auch als Pakete für Ihr Betriebssystem verfügbar. Diese Pakete können über den regulären Paketmanager Ihres Systems installiert werden.
Standardmäßig wird das Modul durch cpanm
in einem systemweiten Verzeichnis installiert. In diesem Fall müssen die Module als Root-Benutzer installiert werden. Der Befehl
root> cpanm Acme::Dice
ergibt z. B.:
otobo> perldoc -l Acme::Dice
/usr/local/share/perl/5.30.0/Acme/Dice.pm
Docker-basierte OTOBO Installationen¶
Besondere Vorsicht ist geboten, wenn OTOBO in Docker ausgeführt wird. In diesem Fall scheint es die einfachste Lösung, das gewünschte Modul einfach in das System-Perl zu installieren. Aufgrund der besonderen Arbeitsweise von Docker geht diese Anpassung aber verloren, sobald der Container neu gestartet wird. Die Module müssen also an einen Ort ausgelagert werden, der auch nach einem Neustart noch verfügbar ist. Das lokale Verzeichnis für die Installation kann mit der Option --local-lib
angegeben werden. Die installierten Module werden von Perl auf Basis der Umgebungsvariablen PERL5LIB
und PATH
gefunden, die im Docker Image entsprechend gesetzt werden.
Die installierten Perl-Module sind auch nach einem OTOBO-Upgrade weiterhin verfügbar. Die Grundsatzregel lautet, dass unter /opt/otobo
hinzugefügte Dateien bei einem Upgrade nicht gelöscht werden.
Um Perl Module in einem bestimmten Verzeichnis zu installieren, muss der Installationsbefehl angepasst werden. Konkret wird in diesem Fall die Option --local-lib
angefügt. Im Folgenden ein Beispiel aus dem Container web.
# starting a bash session in the container web
docker_admin> cd /opt/otobo-docker/
docker_admin> docker-compose exec web bash
otobo@6ef90ed00cd0:~$ pwd
/opt/otobo
# installing the sample module Acme::Dice
otobo@6ef90ed00cd0:~$ cpanm --local-lib local Acme::Dice
--> Working on Acme::Dice
Fetching http://www.cpan.org/authors/id/B/BO/BOFTX/Acme-Dice-1.01.tar.gz ... OK
Configuring Acme-Dice-1.01 ... OK
Building and testing Acme-Dice-1.01 ... OK
Successfully installed Acme-Dice-1.01
1 distribution installed
# confirm the installation directory
otobo@6ef90ed00cd0:~$ perldoc -l Acme::Dice
/opt/otobo/local/lib/perl5/Acme/Dice.pm
# locally installed module is found because the environment is preset accordingly
otobo@6ef90ed00cd0:~$ echo $PERL5LIB
/opt/otobo_install/local/lib/perl5:/opt/otobo/local/lib/perl5
otobo@6ef90ed00cd0:~$ echo $PATH
/opt/otobo_install/local/bin:/opt/otobo/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin