Re: Problem compiling DBD::Oracle on FreeBSD with Oracle 10g Instant Client
[email protected] (John Scoles)
| Newsgroups | perl.dbi.users |
|---|---|
| Message-ID | <[email protected]> |
On 10/5/2010 3:58 AM, Martin J. Evans wrote: > On 03/10/10 17:45, Eric Yellin wrote: >> >> Hi, >> >> >> I am trying to compile DBD::Oracle that will work with Oracle 10g on >> FreeBSD 6.3 >> >> >> Here is what I have done so far: >> >> 1. Installed the 3 Oracle Instant Client ports: >> >> - linux-oracle-instantclient-basic >> - linux-oracle-instantclient-sdk >> - linux-oracle-instantclient-sqlplus >> >> These install as follows: >> _The "basic files install in:_ >> /usr/compat/linux/usr/lib/Oracle/10.2.0.3/client/lib >> >> _The sqlplus installes in _: >> /usr/compat/linux/usr/lib/Oracle/10.2.0.3/client/bin >> >> _The sdk split between:_ >> /usr/compat/linux/usr/include/Oracle/10.2.0.3/client/lib (the include >> directory) >> and: >> /usr/compat/linux/usr/share/Oracle/10.2.0.3/client/lib (the demo directory) >> >> 2. Downloaded latest DBD::Oracle (1.25) >> >> 3. Set Environment variables as follows: >> setenv LD_LIBRARY_PATH /usr/compat/linux/usr/lib/oracle/10.2.0.3/client/lib >> setenv ORACLE_HOME /usr/compat/linux/usr/lib/oracle/10.2.0.3/client > You normally don't need to set ORACLE_HOME for instant client. > > Shouldn't that be /usr/compat/linux/usr/lib/oracle/10.2.0.3, i.e. no client/lib on the end? > >> 4. Ran perl Makefile.PL for DBD:Oracle and recieved the follwoing error: >> /"Unable to locate an oracle.mk, proc.mk or other suitable *.mk"/ >> >> 5. changed the ORACLE_HOME variable to: setenv ORACLE_HOME >> /usr/compat/linux/usr/lib/oracle/10.2.0.3/client/lib and ran "perl >> Makefile.PL" again and now received the following message: >> /"I can't find the header files I need in your Oracle installation. >> You probably need to install some more Oracle components. >> For Instant Client that means the SDK package...."/ >> >> 6. Copied the "sdk" files directly from the ports "work" directory >> leaving them in the original structure and placing them under the >> /usr/compat/linux/usr/lib/oracle/10.2.0.3/client/lib directory and ran >> perl Makefile.PL again. Now it built the Makefile succesfully with a few >> warnings: >> >> /WARNING: If you have problems you may need to rebuild perl with >> threading enabled. >> WARNING: If you have problems you may need to rebuild perl with >> -Uusemymalloc. >> WARNING: META_MERGE is not a known parameter. >> 'META_MERGE' is not a known MakeMaker parameter name./ > I guess the META_MERGE warning is because your ExtUtils::MakeMaker does not support it. If that is the case DBD::Oracle should only add META_MERGE after testing ExtUtils::MakeMaker version. > >> 7. Ran 'make' and it compiled smoothly. >> >> 8. Ran 'make test' and got the following error: >> /Failed to load Oracle extension and/or shared libraries: >> install_driver(Oracle) failed: Can't load >> '/home/packages/Oracle/DBD-Oracle-1.25/blib/arch/auto/DBD/Oracle/Oracle.so' >> for module DBD::Oracle: Shared object "libdl.so.2" not found, required >> by "libclntsh.so.10.1" at /usr/local/lib/perl5/5.8.8/mach/DynaLoader.pm >> line 230. >> at (eval 9) line 3 >> Compilation failed in require at (eval 9) line 3. >> Perhaps a required shared library or dll isn't installed where expected >> at t/01base.t line 19 >> The remaining tests will probably also fail with the same error./ >> >> The libdl.so.2 file is located in "/usr/compat/linux/lib" and the >> compiled DBD::Oracle module does 'know' not see that directory. >> >> How can I move on from here to link the necessary shared libraries >> during runtime ? (Tried doing this with symlinks, but kept getting >> errors and eventually reached a dead end where symlinking did not help >> anymore. I assume there must be a different way to do it) >> >> Thanks, Eric >> >> >> > Undo the changes you made and try again without client/lib in your LD_LIBRARY_PATH and without setting ORACLE_HOME. > > Martin Counter intuitive but that might work. Pleas give it a try. That is something that should go in the readme. cheers John