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

haj
 2020-02-09 21:41
#191353 #191353
User since
2015-01-07
272 articles
BenutzerIn

user image
In der von Dir angegebenen Fehlermeldung sind Hinweise, die vielleicht weiterhelfen...

Das Verzeichnis /home/sites/abc/users/xyz/perl5/lib/perl5 ist vermutlich das Verzeichnis, in dem Du Deine privaten Module ablegen kannst. Hast Du das vom Provider schon so bekommen, um Deine eigenen Module abzulegen? Falls ja, dann wäre das auch ein möglicher Ort, um local::lib und andere CPAN-Module abzulegen. Dann wäre das auch das Verzeichnis, das Du für den Bootstrap-Schritt 2 verwenden solltest.

Der Schritt 4, der bei Dir hakt, ist leider wirklich lausig dokumentiert bei local::lib. Der hat nämlich auf die aktuelle Shell keinerlei Auswirkung. Er schreibt aber die Kommandos, die die Umgebungsvariablen "richtig" versorgen, in eine Datei, die jedes Mal beim Starten einer neuen Shell ausgeführt wird. Dazu muss man aber natürlich wissen, welche Startup-Datei das sein könnte. Hier mal ein Beispiel, was das bei meinem System bewirkt:
Code: (dl )
1
2
PERL_MB_OPT="--install_base \"/home/haj/perl5\""; export PERL_MB_OPT;
PERL_MM_OPT="INSTALL_BASE=/home/haj/perl5"; export PERL_MM_OPT;

Damit werden die Build-Tools CPAN:ExtUtils::MakeMaker (MM) und CPAN:Module::Build (MB) angewiesen, ihre Installationen in dem angegebenen Verzeichnis durchzuführen. $HOME/perl5 ist die Voreinstellung von local::lib, die bei mir wirksam wurde. Und das sind auch die Umgebungsvariablen, mit denen Du die manuelle Installation von local::lib steuern musst.

Beide Build-Tools haben ihre Haken und Ösen: Der MakeMaker braucht das Kommando make, das nicht standardmäßig auf Linuxdistributionen installiert ist. Wenn Du Zugang zu Compilern auf dem System hast, dann solltest Du auch Zugang zu make haben. Module::Build ist Pure-Perl sollte genau das Problem der externen Abhängigkeit beheben, aber viele C-Komponenten brauchen dennoch ein Makefile. Das war dann auch der Anlass, es wieder auch aus dem Perl-Core zu entfernen.

Interessant ist also für weitere Diagnosen:
  • Was sagen make -v und which make?
  • Hast Du Module::Build zur Verfügung?
  • Wo liegt Dein $HOME?
  • Was für eine Shell verwendest Du? (Ich sehe grade, hat Linuxer auch schon gefragt)
  • Wenn Schritt 3 geklappt hat, dann müsste irgendwo in Deinem Verzeichnisbaum local/lib.pm liegen. Bringt ein find $HOME -name lib.pm -print ein Resultat mit "local" im Directory davor?
  • Was für ein Betriebssystem / Version ist das? Ich erinnere mich an Zeiten mit Solaris, wo GNU make unter einem nicht-Standard-Pfad installiert war, weil Solaris ein eigenes mitbrachte... Perl 5.30 spricht allerdings für ein sehr aktuelles System.

Disclaimer: Ich habe local::lib bei mir installiert, aber die Zeilen aus den Startup-Prozeduren rausgeworfen, weil ich es nicht (mehr) verwende. Es verträgt sich nicht mit perlbrew. Deswegen schieße ich hier etwas ins Blaue.

View full thread CPAN -e shell auf shared Hosting einrichten