Wie kann ich CPAN-Module lokal ohne Root-Zugriff installieren (DynaLoader.pm Zeile 229 Fehler)?

8

Funktioniert nicht mit anderen Modulen, aber um ein Beispiel zu geben. Ich habe Text :: CSV_XS mit einer CPAN-Einstellung installiert:

%Vor%

Wenn ich versuche, ein test.pl-Skript auszuführen:

  

$ perl test.pl

%Vor%

Ich bekomme

%Vor%

Ich habe den Fehler zurück zu DynaLoader.pm verfolgt. Es passiert an dieser Zeile:

%Vor%

CSV_XS.so existiert im obigen Verzeichnis

    
Tomasz 19.09.2008, 15:27
quelle

6 Antworten

6

Ich persönlich würde vorschlagen, local :: lib zu verwenden. :)

    
Fayland Lam 23.01.2009, 01:28
quelle
5

Haben Sie sich bei der Installation des Moduls die Ausgabe angesehen? Wo heißt es, dass es das Modul installiert hat? Schau in lib . Sehen Sie das nächste Verzeichnis, das Sie erwarten?

Schauen Sie in ~ / lib nach, um zu sehen, wo alles gelandet ist, um zu überprüfen, ob Sie in Ihrer use lib -Anweisung den richtigen Verzeichnisnamen haben:

% find ~/lib -name CSV_XS.so

Sobald Sie sehen, wo es installiert ist, verwenden Sie diesen Verzeichnisnamen in Ihrem use lib (oder PERL5LIB oder was auch immer).

Ich erwarte, dass du irgendwie lib/lib drin hast. Das PREFIX ist nur das Präfix, well, und das Installationsprogramm hängt andere Verzeichnisabschnitte an diesen Basispfad an. Dazu gehören lib, man, bin, usw. .

    
brian d foy 19.09.2008 17:41
quelle
2

Versuchen Sie es stattdessen:

%Vor%

PREFIX legt die Basis für alle Verzeichnisse fest, in die Sie installieren werden (bin, lib usw.)

Sie können auch mit Ihrem '~' in Shell-Erweiterungsprobleme geraten. Sie können versuchen, es selbst zu erweitern:

%Vor%

Es wäre auch hilfreich, wenn Sie die Befehle angeben würden, die Sie verwendet haben, um den Fehler zu erhalten, nach dem Sie fragen.

    
Frosty 19.09.2008 15:39
quelle
1

Aus der Fehlermeldung ("at / www / common ...") geht hervor, dass Ihr Skript ein CGI- oder mod_perl-Skript ist. Der Webserver wird wahrscheinlich nicht als Benutzer 'foo' ausgeführt, unter dessen Home-Verzeichnis Sie das Modul installiert haben - das könnte dazu führen, dass der Webserver dieses Verzeichnis nicht lesen kann.

Es kann auch in einem Chroot-Gefängnis laufen, was bedeuten würde, dass das Verzeichnis, in dem Sie sich befinden installiert das Modul möglicherweise nicht für das Skript sichtbar.

Mit anderen Worten, nur weil Sie das Modul sehen können, heißt das nicht, dass der Webserver und damit auch Ihr Skript das tun kann. Sie sollten die relevanten Dateiberechtigungen prüfen, und wenn der Server chroot ist, ob Ihr Modulverzeichnis im virtuellen Dateisystem eingebunden ist.

    
Sherm Pendley 07.11.2008 23:17
quelle
0

Existiert die fragliche Datei (CSV_XS.so)?

Existiert es am angegebenen Ort?

Wenn Sie das tun:

%Vor%

Was ist die Ausgabe?

Haben Sie erfolgreich andere lokale Perl-Module installiert?

    
Frosty 19.09.2008 16:32
quelle
0

Ich empfehle dringend, Ihre eigene Perl in Ihrem eigenen Home-Verzeichnis zu installieren, wenn Sie Platz haben. Dann kannst du alles unter deiner Kontrolle behalten und deinen eigenen Modulsatz behalten, sowie entkommen, wenn die Admins dich auf einer älteren Version von Perl halten. (Ganz zu schweigen davon, sich selbst zu erhalten, wenn sie eines Tages upgraden und alle Module auslassen, auf die Sie angewiesen sind.)

    
skiphoppy 19.09.2008 20:41
quelle

Tags und Links