Re: dynamic LD_LIBRARY_PATH

"H.Merijn Brand" <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.sybase.devel
Message-ID <[email protected]>
On Wed, 16 Apr 2014 17:06:19 +0200, "H.Merijn Brand"
<[email protected]> wrote:

> I have a situation where the default location for Oracle ($ORACLE_HOME)
> is pointing to a complete Oracle-10g database environment. That setting
> includes $LD_LIBRARY_PATH (and on HP-UX $SHLIB_PATH)
> 
> That environment is used for 3gl, 4gl and perl
> 
> So far so good.
> 
> Oracle's 10g libraries cause a crash when used in perl scripting when
> DBD::Oracle is used in the same script as Net::SSLeay (OpenSSL-1.0.1g)
> 
> If I install Oracle Instant Client 12.1 (/pro/oracle/ic121) alongside
> Enterprise 10g (/pro/oracle/v102) and set ORACLE_HOME related environ
> to /pro/oracle/ic121 et all, DBD::Oracle-1.70 works, even with OpenSSL
> 
> When I however work in the default 10g environment, DBD::Oracle cannot
> connect, as the LD_LIBRARY_PATH eventually loads libons.so from 10g
> 
> Oracle decided to make *most* libraries have version numbers in the
> names, but did not do that for libons.so (libnnz12.so is obviously a
> different lib than libnnz10.so)
> 
> I so far found no workaround in this deadlock, as I have only .so files
> and no .a files, so I cannot include the .so's in the generated build
> for Oracle.so
> 
> What I now would like to do, is to change LD_LIBRARY_PATH and
> SHLIB_PATH *just before* the Oracle.so starts loading. That way, I can
> just put the shared libs that belong to DBD::Oracle next to Oracle.so
> 
> if I change Oracle.pm to start with
> --8<---
> BEGIN {
>     use Config;
>     (my $loc = $INC{"DBD/Oracle.pm"}) =~
> 	s{/DBD/Oracle.pm$}{/$Config{archname}/auto/DBD/Oracle};
>     $ENV{LD_LIBRARY_PATH} = "$oloc:$ENV{LD_LIBRARY_PATH}";
>     $ENV{SHLIB_PATH}      = "$oloc:$ENV{SHLIB_PATH}";
>     }
> -->8---
> 
> I am still too late :( :(

even then I get conflicts with 10g:

$ env LD_LIBRARY_PATH=/pro/asql/o83R/lib/perl/5.14.2/IA64.ARCHREV_0-LP64-ld/auto/DBD/Oracle:/pro/oracle/ic12 1/lib:$LD_LIBRARY_PATH SHLIB_PATH=/pro/asql/o83R/lib/perl/5.14.2/IA64.ARCHREV_0-LP64-ld/auto/DBD/Oracle:/pro/oracle/ic121/lib:$SHLIB_PATH qs
c f parm
/pro/asql/o83R/lib/perl/5.14.2/IA64.ARCHREV_0-LP64-ld/auto/DBD/Oracle at /pro/asql/o83R/lib/perl/5.14.2/DBD/Oracle.pm line 16.
DBI connect('','PROBEV',...) failed: ERROR OCIEnvNlsCreate. Check ORACLE_HOME (Linux) env var  or PATH (Windows) and or NLS settings, permissions, etc. at /pro/lib/perl5/site_perl/5.14.2/IA64.ARCHREV_0-LP64-ld/PROCURA/DBD.pm line 335.

> I found no commands on HP-UX that alter the embedded library path of
> existing libraries (then I could change that in a copy to the location
> of installation on installation and disable the use of LD_LIBRARY_PATH
> and SHLIB_PATH for those)
> 
> Has anybody else encountered problems like this?
> 
> Any workarounds?
> 
> 


-- 
H.Merijn Brand  http://tux.nl   Perl Monger  http://amsterdam.pm.org/
using perl5.00307 .. 5.19   porting perl5 on HP-UX, AIX, and openSUSE
http://mirrors.develooper.com/hpux/        http://www.test-smoke.org/
http://qa.perl.org   http://www.goldmark.org/jeff/stupid-disclaimers/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.