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 unter Docker läuft. In diesem Fall würde eine Installation an einem systemweiten Speicherort zunächst auch funktionieren. Aufgrund der Funktionsweise von Docker würden diese installierten Module jedoch verloren gehen, wenn der Container neu gestartet wird. Daher müssen die Module an einem Ort installiert werden, der einen Neustart überlebt. Das Verzeichnis /opt/otobo/local innerhalb des Volumes otobo_opt_otobo kann dafür verwendet werden. Module, die in /opt/otobo/local installiert sind, werden von Perl aufgenommen, da die Umgebungsvariablen PERL5LIB und PATH entsprechend voreingestellt sind.
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 an einem bestimmten Ort zu installieren, müssen wir unseren Installationsbefehl ändern. Insbesondere müssen wir die Option --local-lib hinzufügen. Hier ist eine Beispielsitzung im 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