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