[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

ENV['LD_LIBRARY_PATH'] not changing env

TDR

8/10/2007 2:23:00 PM

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

3 Answers

ara.t.howard

8/10/2007 3:09:00 PM

0


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://draw...
--
we can deny everything, except that we have the possibility of being
better. simply reflect on that.
h.h. the 14th dalai lama




TDR

8/31/2007 4:09:00 PM

0

On Aug 10, 10:22 am, TDR <tdruttenb...@gmail.com> 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.

Daniel Berger

8/31/2007 6:01:00 PM

0



On Aug 31, 10:10 am, TDR <tdruttenb...@gmail.com> wrote:
> On Aug 10, 10:22 am, TDR <tdruttenb...@gmail.com> 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