Tôi không thể sử dụng %ENV
var trên tập lệnh Perl của mình để sử dụng thư viện Oracle.% ENV không hoạt động và tôi không thể sử dụng thư viện được chia sẻ
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;
};
Nếu tôi in $ENV{'ORACLE_HOME'}
và $ENV{'LD_LIBRARY_PATH'}
tất cả dường như ok nhưng, khi tôi chạy kịch bản của tôi, tôi có lỗi:
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
Tìm kiếm trên web tôi thấy rằng cách chính xác để thiết lập env VAR trên Perl là sử dụng hàm băm %ENV
.
Xuất ORACLE_HOME
và LD_LIBRARY_PATH
qua vỏ unix (export LD_LIBRARY_PATH=...
) hoạt động chính xác. Lời khuyên nào?
Đã lâu rồi tôi phải làm việc với Oracle và Perl và tôi nhớ rằng một trong những thư viện mà mô-đun Perl cần không cài đặt với bản cài đặt của nhà phát triển. Tôi sẽ phải giải nén các tập tin và kéo thư viện ra khỏi gói cơ sở dữ liệu. –
Nhưng thật lạ lùng, bởi vì nếu tôi xuất các đường dẫn đó thông qua trình bao, nó hoạt động chính xác. Dường như không phải là một vấn đề liên quan đến các thư viện bị thiếu – Daniele
Shell shell wrapper là cách chúng tôi luôn làm. –