Schrift
[thread]600[/thread]

Includes bei mehreren Perlinstall. auf Strato



<< >> 7 Einträge, 1 Seite
gorch
 2005-10-30 18:36
#5887 #5887
User since
2005-10-30
3 Artikel
BenutzerIn
[Homepage] [default_avatar]
Für einen Bekannten habe ich auf einem Premiumpaket von Strato den Cross-Desktop installiert. Leider hat Strato standardmässig Perl 5.4 auf Solaris installiert. Daneben hat man mit #!/usr/bin/perl58 die Möglichkeit die Skripte mit Perl5.8 laufen zu lassen.

Bei "use URI;" aus Perl 5.8 kommen allerdings Fehlermeldungen, die aufzeigen, das @INC nicht auf Perl 5.8 zurückgreift, sondern auf 5.4.

Weitere Tests haben ergeben, das das eigentliche CGI-Script sehr wohl Perl 5.8 verwendet, die Module aber nicht. Es hat mir auch nichts geholfen, mit "use lib ..." das @INC umzubiegen. Entsprechende Angaben in Modulen helfen auch nichts. Bei URI gibt es da sowieso keine Möglichkeit, da es Bestandteil der Perl-Distribution ist.

Vielleicht hat schon mal jemand ein ähnliches Problem gehabt.

Viele Grüße!
esskar
 2005-10-30 18:51
#5888 #5888
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=gorch,30.10.2005, 17:36]Es hat mir auch nichts geholfen, mit "use lib ..." das @INC umzubiegen.[/quote]
wann hast du das getan?
im BEGIN-Block?
pq
 2005-10-30 20:49
#5889 #5889
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
use lib muss nicht ins BEGIN. das wird ja selbst beim kompilieren ausgeführt.
es muss nur vor den anderen modulen stehn.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
gorch
 2005-10-31 10:30
#5890 #5890
User since
2005-10-30
3 Artikel
BenutzerIn
[Homepage] [default_avatar]
Das Problem ist, das ich an URI nicht drehen kann, da es Teil von Perl58 ist.

Ein Beispielprogramm:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/perl58

#use URI;

use File::Find;

use Cwd;

foreach $dir (@INC){

find(\&pms, $dir);

}

sub pms{

if(/\.pm/i){

$current_dir = cwd();

print "$current_dir $_\n";

}

}

Das Programm gibt alle Module aus. Ohne URI erkennt man, das beim Ausführen des Programms in der Shell das Modul URI in der Liste verfügbarer Module angezeigt wird. Somit scheint alles korrekt zu sein.

Wird allerdings versucht, auf das Modul zuzugreifen (Kommentarzeichen entfernen und nochmals aufrufen), dann bekommt man eine Fehlermeldung, das Modul sei nicht im Includepfad (@INC) erreichbar. Das Modul ist somit nicht
verwendbar. Es scheint mir daher, das die Konfiguration auf der Maschine bzgl. Perl 5.8 nicht ganz ausreichend ist.

Offensichtlich verwenden Module ein anderes Environment, als das Mutter-Script. Die Module kann ich nicht beeinflussen, da kein Zugriff auf die Distribution besteht. Die Fragen sind also. Wo stelle ich das Environment ein? Kann ich das auf der Shellebene tun und wie?

Der Webserver ist suexec konfiguriert. Die Scripte laufen mit dem Webspace zugeteilten User.

Vielen Dank!\n\n

<!--EDIT|renee|1130762574-->
ptk
 2005-10-31 10:48
#5891 #5891
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=gorch,30.10.2005, 17:36]Bei URI gibt es da sowieso keine Möglichkeit, da es Bestandteil der Perl-Distribution ist.
[/quote]
Das stimmt nicht, sagt Module::CoreList:
Code: (dl )
1
2
3
corelist URI

URI was not in CORE (or so I think)
gorch
 2005-11-01 17:20
#5892 #5892
User since
2005-10-30
3 Artikel
BenutzerIn
[Homepage] [default_avatar]
ptk, wenn Du oben richtig gelesen hättest, dann hättest Du gesehen, das ich nicht an die Perlinstallation herankomme.

Es bleibt also die Frage: Wie kann ich das Environment so beeinflussen, z.B. Shellebene, so das Perlmodule die gleichen Bibliotheken sehen, wie deren aufrufende Skripte?

Grüße,

gorch
Gast Gast
 2005-11-01 18:09
#5893 #5893
Autsch. Also:
1. Bezog sich ptk auf deine Aussage, URI sei Core-Modul. Diese hast du getätigt, wäre dir aufgefallen, wenn du seinen und deinen Beitrag richtig gelesen hättest.
2. Ich würde eher versuchen rauszufinden, warum das notwendig ist. @INC sollte normalerweise für die gesamte Interpreterinstanz gelten.
<< >> 7 Einträge, 1 Seite



View all threads created 2005-10-30 18:36.