%ENV funktioniert nicht und ich kann shared library

Kann ich nicht verwenden %ENV var auf meiner Perl-Skript für die Verwendung von Oracle-libs.

BEGIN {
    $ORACLE_HOME = "/usr/lib/oracle/10.2.0.3/client64";
    $LD_LIBRARY_PATH = "$ORACLE_HOME/lib";
    $ORACLE_SID="prod";
    $ENV{ORACLE_SID}=$ORACLE_SID;
    $ENV{ORACLE_HOME}= $ORACLE_HOME;
    $ENV{LD_LIBRARY_PATH}= $LD_LIBRARY_PATH;
};

Wenn ich drucken $ENV{'ORACLE_HOME'} und $ENV{'LD_LIBRARY_PATH'} scheint alles ok aber wenn ich mein script habe ich den Fehler:

install_driver(Oracle) failed: Can ' T load '/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so' for module DBD::Oracle: libclntsh.so.10.1: nicht öffnen können shared object-Datei: Keine solche Datei oder Verzeichnis in /usr/lib64/perl5/DynaLoader.pm line 200.
at (eval 3) Zeile 3
Compilation failed in require at (eval 3) - Linie 3.
Vielleicht eine benötigte shared library oder dll ist nicht installiert, wo erwartet
bei Persistenz.perl Zeile 22

Suche auf der Website, die ich sah, dass der richtige Weg, um env-vars auf Perl ist die Verwendung %ENV hash.

Exportieren ORACLE_HOME und LD_LIBRARY_PATH durch unix-shell (export LD_LIBRARY_PATH=...) funktioniert es einwandfrei. Irgendwelche Ratschläge?

  • Es war eine lange Zeit seit ich hatte auf der Arbeit mit Oracle und Perl, und ich erinnere mich, dass eine der Bibliotheken, die das Perl-Modul nicht installieren, mit der Entwickler installieren. Ich hätte um die Dateien zu extrahieren und ziehen Sie die Bibliothek aus der Datenbank-Paket.
  • Aber ist seltsam, denn wenn ich exportieren, die Pfade durch shell, funktioniert es einwandfrei. Scheint nicht ein problem im Zusammenhang mit fehlenden Bibliotheken
  • Shell-Skript-wrapper, wie wir das immer getan haben es.
InformationsquelleAutor Daniele | 2011-12-28
Schreibe einen Kommentar