Thread CPAN -e shell auf shared Hosting einrichten (29 answers)
Opened by bianca at 2020-02-04 22:07

haj
 2020-02-12 11:08
#191381 #191381
User since
2015-01-07
272 articles
BenutzerIn

user image
Na, mit diesen Antworten sollten wir das hinkriegen. Das sieht alles gut aus. Du hast make, und die Installation von local::lib hat auch funktioniert, dahin, wo Du es haben wolltest.

Aus dem Abfrageergebnis zu set sehen wir aber, dass Deine Shell ohne die Umgebungsvariablen von local::lib läuft. Mir persönlich ist das so auch lieber, aber: Deswegen findet Perl auch local::lib nicht.
An dieser Stelle kommt der Schritt 4 aus dem Bootstrapping-Rezept ins Spiel. Der müsste in Deinem Fall so lauten:

Code: (dl )
echo 'eval "$(perl -I/home/sites/abc/perl5/lib/perl5 -Mlocal::lib=/home/sites/abc/perl5)"' >>~/.bashrc

Beachte, dass Dein Installationsverzeichnis an zwei Stellen in diesem Kommando vorkommt. Wenn Du es nach dem -I nicht drin hast, oder das /lib/perl5 nicht drangehängt hast, dann haben wir schon die Ursache.

Schau Dir in jedem Fall auch Deine Datei .bashrc in Deinem Home-Verzeichnis an, wie da die letzte(n) Zeile(n) ausschauen. Da sollte höchstens eine von diesen eval-Zeilen drinstehen:
Code: (dl )
eval "$(perl -I/home/sites/abc/perl5/lib/perl5 -Mlocal::lib=/home/sites/abc/perl5)"


Zur Kontrolle kannst Du das Kommando eingeben, das Linuxer schon empfohlen hat, aber nun auf Deinen Installationspfad angepasst. Das gibt die Umgebungsvariablen, mit denen local::lib das Verhalten bei der Installation von CPAN-Modulen oder beim Ablauf von Perl steuert:
Code: (dl )
perl -I/home/sites/abc/perl5/lib/perl5 -Mlocal::lib


Damit die lokale Umgebung auch in der aktuellen Umgebung wirksam wird, kannst Du nun entweder die .bashrc nochmal auswerten mit
Code: (dl )
. ~/.bashrc 
(der Punkt am Anfang ist das entscheidende!) oder direkt das eval-Kommando absetzen:
Code: (dl )
eval "$(perl -I/home/sites/abc/perl5/lib/perl5 -Mlocal::lib=/home/sites/abc/perl5)"



In Deiner Perl-Anwendung, die ja nicht unter Deiner Login-Shell läuft, musst Du die lokale Bibliothek dann auch einbinden:
Code (perl): (dl )
use lib '/home/sites/abc/perl5/lib/perl5';
Ich vermute aber, das verwendest Du schon, damit Perl Deine eigenen Module findet.

Noch ein paar Kleinigkeiten zu Deinen Rückfragen:
2020-02-12T07:25:36 bianca
2020-02-09T20:41:02 haj
ein Resultat mit "local" im Directory davor?
Was meinst du mit "Directory davor"?

Es zählt nur, wenn der Pfad mit /local/lib.pm aufhört, was er bei Dir tut. Das find-Kommando würde auch Module wie Blah::lib finden.

2020-02-12T07:25:36 bianca
2020-02-09T20:41:02 haj
Dazu muss man aber natürlich wissen, welche Startup-Datei das sein könnte.
Kann man das abfragen?
Du hast die Frage schon beantwortet. Die Shell ist bash, eine passende Startup-Datei ist also .bashrc.

View full thread CPAN -e shell auf shared Hosting einrichten