Я не могу использовать %ENV
var на моем скрипте Perl для использования Oracle libs.% ENV не работает, и я не могу использовать общую библиотеку
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;
};
Если я печатаю $ENV{'ORACLE_HOME'}
и $ENV{'LD_LIBRARY_PATH'}
все кажется хорошо, но, когда я бегу мой сценарий у меня есть ошибка:
install_driver(Oracle) failed: Can't load '/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so' for module DBD::Oracle: libclntsh.so.10.1: cannot open shared object file: No such file or directory at /usr/lib64/perl5/DynaLoader.pm line 200. at (eval 3) line 3 Compilation failed in require at (eval 3) line 3. Perhaps a required shared library or dll isn't installed where expected at persistence.perl line 22
Searching на веб-я видел, что правильный способ установить окр вары на Perl использовать %ENV
хеш.
Экспорт ORACLE_HOME
и LD_LIBRARY_PATH
через оболочку unix (export LD_LIBRARY_PATH=...
) он работает правильно. Любой совет?
Прошло много времени с тех пор, как мне пришлось работать с Oracle и Perl, и я помню, что одна из библиотек, которые нуждается в модуле Perl, не устанавливается с установкой разработчика. Мне пришлось бы извлечь файлы и вытащить библиотеку из пакета базы данных. –
Но странно, потому что, если я экспортирую эти пути через оболочку, он работает правильно. Кажется, проблема не связана с отсутствующими библиотеками. – Daniele
Оболочка оболочки оболочки - это то, как мы всегда это делали. –