Re: How to set LD_LIBRARY_PATH

[email protected] (Shlomi Fish)
Newsgroups perl.dbi.users,perl.beginners
Message-ID <[email protected]>
On Friday 28 May 2010 10:45:14 newbie01 perl wrote:
> Hi all,
> 
> Can someone advise how to set LD_LIBRARY_PATH from within the Perl scripts?
> 
> If I set LD_LIBRARY_PATH from the command line, all is okay
> 
> [oracle ~]$ perl -e 'use DBD::Oracle; print $DBD::Oracle::VERSION,"\n";'
> Can't load
> '/oracle/product/db/11.1/perl/lib/site_perl/5.8.3/x86_64-linux-thread-multi
> /auto/DBD/Oracle/Oracle.so' for module DBD::Oracle: libclntsh.so.11.1:
> cannot open shared object file: No such file or directory at
> /usr/lib64/perl5/5.8.5/x86_64-linux-thread-multi/DynaLoader.pm line 230.
> at -e line 1
> Compilation failed in require at -e line 1.
> BEGIN failed--compilation aborted at -e line 1.
> [oracle ~]$ export LD_LIBRARY_PATH=/oracle/product/db/11.1/lib
> [oracle ~]$ perl -e 'use DBD::Oracle; print $DBD::Oracle::VERSION,"\n";'
> 1.15
> 
> But if I do the following instead in the Perl script, it does not work? How
> to set the LD_LIBRARY_PATH then?
> 
> $ENV{ORACLE_HOME}=$ORACLE_HOME;
> $ENV{ORACLE_SID}=$ORACLE_SID;
> $ENV{PATH}="$ORACLE_HOME/bin:$PATH";
> $ENV{LD_LIBRARY_PATH}="$ORACLE_HOME/lib";
> 
> FYI, the script is to run from a cron which is why am setting
> LD_LIBRARY_PATH in the script.
> 

If you're going to use "use DBD::Oracle;" in the script then you'll need to 
put these statements in a BEGIN block:

[code]
use vars qw($ORACLE_HOME $ORACLE_SID);

BEGIN
{
	$ORACLE_HOME = ...;
	$ORACLE_SID = ...;
	$ENV{ORACLE_HOME}=$ORACLE_HOME;
	$ENV{ORACLE_SID}=$ORACLE_SID;
	$ENV{PATH}="$ORACLE_HOME/bin:$PATH";
	$ENV{LD_LIBRARY_PATH}="$ORACLE_HOME/lib";
}

use DBD::Oracle;
[/code]

That's because "use" is executed at compile-time instead of run-time.

Regards,

	Shlomi Fish

-- 
-----------------------------------------------------------------
Shlomi Fish       http://www.shlomifish.org/
"The Human Hacking Field Guide" - http://shlom.in/hhfg

God considered inflicting XSLT as the tenth plague of Egypt, but then
decided against it because he thought it would be too evil.

Please reply to list if it's a mailing list post - http://shlom.in/reply .
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.