garybiscuit has asked for the wisdom of the Perl Monks concerning the following question:
Hi,
I've successfully installed the DBI and DBD::Oracle Perl modules, but I've noticed that I can't "use DBD::Oracle;" unless my LD_LIBRARY_PATH is set in my environment before I call the Perl program that attempts to use DBD::Oracle...
# ========================================== BEGIN { $ENV{'ORACLE_HOME'} = '/my/oracle_home'; $ENV{'LD_LIBRARY_PATH'} = '/my/oracle_home/lib'; } use strict; use warnings; use DBI; use DBD::Oracle; print "Hello world!\n"; # ==========================================
...produces...
# ========================================== Can't load '/usr/perl5/5.16.2/lib/site_perl/5.16.2/sun4-solaris/auto/D +BD/Oracle/Oracle.so' for module DBD::Oracle: ld.so.1: perl: fatal: li +bclntsh.so.11.1: open failed: No such file or directory at /usr/perl5 +/5.16.2/lib/5.16.2/sun4-solaris/DynaLoader.pm line 190. at ./ecm_bounce_pusher.pl line 15. Compilation failed in require at ./test_program.pl line 8. BEGIN failed--compilation aborted at ./test_program.pl line 8. # ==========================================
... if LD_LIBRARY_PATH is NOT set in my environment first. However, if I *do* set LD_LIBRARY_PATH in the environment, the above code works fine.
Obviously I could make a wrapper script that sets LD_LIBRARY_PATH before invoking my above program, but I'd like to make my program as compact and self-reliant as possible (i.e. no wrapper script).
Is there anything I can do to be able to invoke DBD::Oracle without having to set LD_LIBRARY_PATH first in the environment?
---- MY STATS ----
OS: Solaris 10
Perl: 5.16
Oracle: 11.2.0.3 Instant Client
-------------------
Thanks,
Gary