RE: How to set LD_LIBRARY_PATH

[email protected] ("Bobak, Mark")
Newsgroups perl.dbi.users,perl.beginners
Message-ID <[email protected]>
I'd argue you want to use a shell wrapper anyhow, because rather than setting those variables explicitly, you ought to do something like:
export ORACLE_SID=your_sid
export ORAENV_ASK=NO
. oraenv

and Oracle will set it all for you, and if/when something changes or is upgraded, your code will continue to do the right thing.

-Mark
________________________________________
From: Paul Johnson [[email protected]]
Sent: Friday, May 28, 2010 12:33
To: John Scoles
Cc: newbie01 perl; beginners; dbi-users
Subject: Re: How to set LD_LIBRARY_PATH

On Fri, May 28, 2010 at 06:14:38AM -0400, John Scoles wrote:

> You will have to set those values before your modules load.
>
> So you should stick them in the BEGIN and that should work

... except where it doesn't, such as on Solaris for example.  Here,
LD_LIBRARY_PATH (at least) really does need to be set before the process
starts.  You can do this by writing a shell wrapper, or re-execing your
perl script if the value is not already set.

You're using linux and I'm not sure if this sort of messing about is
required there.


> http://www.compuspec.net/reference/language/perl/BEGIN_and_END.shtml
>
> cheers
> John Scoles
>
> On Fri, May 28, 2010 at 3:45 AM, newbie01 perl <[email protected]>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.
> >
> > Any response will be very much appreciated. Thanks in advance.
> >
>
> --
> Catch Alex & Sheeri at ODTUG/Kaleidoscope - June 27 - July 1.
> Hear Sheeri speak or email [email protected] to meet with Pythian.

--
Paul Johnson - [email protected]
http://www.pjcj.net
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.