Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > ENV['LD_LIBRARY_PATH'] not changing env

Reply
Thread Tools

ENV['LD_LIBRARY_PATH'] not changing env

 
 
TDR
Guest
Posts: n/a
 
      08-10-2007
Ruby 1.8.6 on solaris 9.

I am a newbie.
I need to set LD_LIBRARY_PATH within my script as follows:

ENV['LD_LIBRARY_PATH'] = '/usr/local/mysql/lib/mysql:/usr/local/
easysoft/unixODBC/lib:/usr
/local/easysoft/lib'

but it doesn't seem to be "taking". I get the error I would expect to
get when LD_LIBRARY_PATH is not set:

s00c166.ssa.gov# ruby -r debug process_ond.rb
Debug.rb
Emacs support available.

process_ond.rb:29:def lookup_cid(off_id)
(rdb:1) b 95
Set breakpoint 1 at process_ond.rb:95
(rdb:1) c
Breakpoint 1, toplevel at process_ond.rb:95
process_ond.rb:95:ENV['LD_LIBRARY_PATH'] = '/usr/local/mysql/lib/
mysql:/usr/local/easysoft/unixODBC/lib:/usr/local/easysoft/lib'
(rdb:1) n
process_ond.rb:99:$dbh_ditm = DBI.connect("DBI:Mysql:ditm:localhost",
"ditmusr", "xxxxxx")
(rdb:1) n
/usr/local/lib/ruby/site_ruby/1.8/dbi.rb:344: `Could not load driver
(ld.so.1: ruby: fatal: libmysqlclient.so.15: open failed: No such file
or directory - /usr/local/lib/ruby/site_ruby/1.8/sparc-solaris2.9/
mysql.so)' (DBI::InterfaceError)
from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:344:in
`load_driver'
from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:227:in
`_get_full_driver'
from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:213:in `connect'
from process_ond.rb:99
/usr/local/lib/ruby/site_ruby/1.8/dbi.rb:344: raise
InterfaceError, "Could not load driver (#{$!.message})"
(rdb:1)

But when I set LD_LIBRARY_PATH in my shell, prior to running the
script, I don't get this error:

s00c166.ssa.gov# setenv LD_LIBRARY_PATH '/usr/local/mysql/lib/mysql:/
usr/local/easysoft/unixODBC/lib:/usr/local/easysoft/lib'
s00c166.ssa.gov# ruby -r debug
process_ond.rb Debug.rb
Emacs support available.

process_ond.rb:29:def lookup_cid(off_id)
(rdb:1) b 99
Set breakpoint 1 at process_ond.rb:99
(rdb:1) c
Breakpoint 1, toplevel at process_ond.rb:99
process_ond.rb:99:$dbh_ditm = DBI.connect("DBI:Mysql:ditm:localhost",
"ditmusr", "xxxxxx")
(rdb:1) n

What am I doing wrong here?

TDR

 
Reply With Quote
 
 
 
 
ara.t.howard
Guest
Posts: n/a
 
      08-10-2007

On Aug 10, 2007, at 8:25 AM, TDR wrote:

>
> ENV['LD_LIBRARY_PATH'] = '/usr/local/mysql/lib/mysql:/usr/local/
> easysoft/unixODBC/lib:/usr
> /local/easysoft/lib'


you may be clobbering an existing (required) env setting - try this:

ENV[ 'LD_LIBRARY_PATH' ] = [
'/foo',
'/bar',
ENV[ 'LD_LIBRARY_PATH' ],
].join(':')

a @ http://drawohara.com/
--
we can deny everything, except that we have the possibility of being
better. simply reflect on that.
h.h. the 14th dalai lama




 
Reply With Quote
 
 
 
 
TDR
Guest
Posts: n/a
 
      08-31-2007
On Aug 10, 10:22 am, TDR <(E-Mail Removed)> wrote:
> Ruby 1.8.6 on solaris 9.
>
> I am a newbie.
> I need to setLD_LIBRARY_PATHwithin my script as follows:
>
> ENV['LD_LIBRARY_PATH'] = '/usr/local/mysql/lib/mysql:/usr/local/
> easysoft/unixODBC/lib:/usr
> /local/easysoft/lib'
>
> but it doesn't seem to be "taking". I get the error I would expect to
> get whenLD_LIBRARY_PATHis not set:


I had originally assumed this to be a problem with setting any
environment variables. It turns out LD_LIBRARY_PATH is a special
case. The syntax for setting environment variables in ruby worked
fine for TNS_ADMIN.

Moreover, I came across a posting somewhere today that explains why
not to use LD_LIBRARY_PATH, but rather LD_RUN_PATH. So the situation
in this posting, it turns out, is specific to LD_LIBRARY_PATH.

Hope this helps someone.

 
Reply With Quote
 
Daniel Berger
Guest
Posts: n/a
 
      08-31-2007


On Aug 31, 10:10 am, TDR <(E-Mail Removed)> wrote:
> On Aug 10, 10:22 am, TDR <(E-Mail Removed)> wrote:
>
> > Ruby 1.8.6 on solaris 9.

>
> > I am a newbie.
> > I need to setLD_LIBRARY_PATHwithin my script as follows:

>
> > ENV['LD_LIBRARY_PATH'] = '/usr/local/mysql/lib/mysql:/usr/local/
> > easysoft/unixODBC/lib:/usr
> > /local/easysoft/lib'

>
> > but it doesn't seem to be "taking". I get the error I would expect to
> > get whenLD_LIBRARY_PATHis not set:

>
> I had originally assumed this to be a problem with setting any
> environment variables. It turns out LD_LIBRARY_PATH is a special
> case. The syntax for setting environment variables in ruby worked
> fine for TNS_ADMIN.
>
> Moreover, I came across a posting somewhere today that explains why
> not to use LD_LIBRARY_PATH, but rather LD_RUN_PATH. So the situation
> in this posting, it turns out, is specific to LD_LIBRARY_PATH.


You can usually avoid setting either one (on Solaris, at least) if the
underlying libraries have been built with the runtime library path set
properly. In some case this means running the configure script, then
hand editing the Makefile and adding "-R /path/to/lib".

Regards,

Dan


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
javax.naming.NameNotFoundException: Name "comp/env/ejb/mybean" not found in context "java:". Akaketwa Java 2 10-04-2006 04:55 PM
SAXException: Attribute "xmlns:env" was already specified for element "env:Envelope' Ankit Mehta Java 1 09-29-2006 09:24 PM
Runtime.exec() with env and working directory parameters is not working. Priyanka AGARWAL Java 9 05-25-2004 02:34 PM
MCSE - 2003 Env. jen MCSE 6 11-18-2003 09:34 PM
XmlValidatingReader throws exception for SAOP-ENV:encodingStyle attribute Himmat Dhange ASP .Net 0 08-26-2003 08:28 PM



Advertisments