ENV['LD_LIBRARY_PATH'] not changing env

T

TDR

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
 
A

ara.t.howard

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/
 
T

TDR

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.
 
D

Daniel Berger

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,992
Messages
2,570,220
Members
46,807
Latest member
ryef

Latest Threads

Top