install_driver(Oracle) failed: Can't load
'/usr/lib/perl5/site_perl/5.6.1/i386-linux/auto/DBD/Oracle/Oracle.so'
for module DBD::Oracle:
libclntsh.so.8.0: cannot open shared object file:
No such file or directory at
/usr/lib/perl5/5.6.1/i386-linux/DynaLoader.pm line 169.
at (eval 27) line 3
Perhaps a required shared
library or dll isn't installed where expected at
/usr/local/apache/perl/tmp.pl line 11
On BSD-style filesystems, LD_LIBRARY_PATH is not
searched for setuid programs. If Apache is a
setuid executable, you might receive this error.
Therefore, the first solution is to explicitly load the library from
the system-wide ldconfig configuration file:
panic# echo $ORACLE_HOME/lib >> /etc/ld.so.conf
panic# ldconfig
Another solution to this problem is to modify the
Makefile file (which is created when you run
perl Makefile.PL) as follows:
-
Search for the line LD_RUN_PATH=
-
Replace it with LD_RUN_PATH=my_oracle_home/lib
where my_oracle_home is, of course, the home
path to your Oracle installation. In particular, the file
libclntsh.so.8.0 should exist in the
lib subdirectory.
Then just type make install, and all should go
well.
Note that setting LD_RUN_PATH has the effect of
hardcoding the path to my_oracle_home/lib in the
file Oracle.so, which is generated by
DBD::Oracle. This is an efficiency mechanism, so
that at runtime it doesn't have to search through
LD_LIBRARY_PATH or the default directories used by
ld.