Re: DBD::Oracle on RHEL5 [2.6.18-164.el5 albiet not really relevant] x86_64
"Martin J. Evans" <[email protected]>
| Newsgroups | gmane.comp.lang.perl.modules.dbi.general |
|---|---|
| Organization | Easysoft Limited |
| Message-ID | <[email protected]> |
On 21/11/11 16:48, Jess Portnoy wrote: > Hello list, > > I used the following RPMs by Oracle: > oracle-instantclient11.2-basic-11.2.0.2.0-1 > oracle-instantclient11.2-devel-11.2.0.2.0-1 Install sqlplus because I believe without it the Makefile.PL will struggle to find the version of your client and without that you may end up with the default v8 only support missing loads of stuff out. > Which can be downloaded from here: > http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html > > Below, is the output I got. In bold are message strings I have comments > on. > > Thanks, > > Installing on a linux, Ver#2.6 > Using Oracle in /usr/lib/oracle/11.2/client64 > Can't find sqlplus. Pity, it would have helped. > Jess: sqlplus actually did exist on this machine but since the Oracle > installation [not done via an RPM], only configures the ENV for use of > the 'oracle' user, sqlplus was not in the PATH. Not much you can do > about this of course.. maybe prompt for the PATH? Install sqlplus package from the same place as the instant client - the minimum packages to install which will work flawlessly are: basic sdk sqlplus It is irrelevant where any sqlplus is in your main Oracle install - DBD::Oracle only wants sqlplus to discover the version of the client libs. It does not need to be on your path as the Makefile.PL will work it out based on where you pointed LD_LIBRARY_PATH. > Forcing Oracle version to be treated as 11.2.0.2 > Oracle version 11.2.0.2 (11.2) > Found /usr/share/oracle/11.2/client64/demo.mk > Using /usr/share/oracle/11.2/client64/demo.mk > Your LD_LIBRARY_PATH env var is set to ':/usr/lib:/usr/local/lib' > WARNING: Your LD_LIBRARY_PATH env var doesn't include > '/usr/lib/oracle/11.2/client64/lib' but probably needs to. > Jess: this is not strictly true. What I usually do is: > # cat /etc/ld.so.conf.d/oracle > /usr/lib/oracle/11.2/client64/lib > In my opinion, placing the oracle.conf file under /etc/ld.so.conf.d and > running ldconfig is cleaner then just adding to LD_LIBRARY_PATH in some > bashrc or profile file. > I'm not saying the message should be omitted altogether but perhaps > changed? What you prefer to do is fine but if you want DBD::Oracle to build without those warnings you need to tell it where to find the instant client and the way you do that right now is to set LD_LIBRARY_PATH. Alternatively, you can use -m, -h but I've never done that myself. > Reading /usr/share/oracle/11.2/client64/demo.mk > WARNING: Oracle /usr/share/oracle/11.2/client64/demo.mk doesn't define a > 'build' rule. > > WARNING: I will now try to guess how to build and link DBD::Oracle for > you. > This kind of guess work is very error prone and Oracle-version > sensitive. > It is possible that it won't be supported in future versions of > DBD::Oracle. > *PLEASE* notify dbi-users about exactly _why_ you had to build > it this way. > Jess: and this is my notifying you guys :) > Found header files in /usr/include/oracle/11.2/client64. Yes, you are the second person recently to do this and there is an rt (https://rt.cpan.org/Ticket/Display.html?id=72471) mentioning it too - thank you. The message above is a hang over from the past. The problem is that DBD::Oracle's Makefile.PL is probably one of the largest Makefile's on CPAN with years and years of history, workarounds and twiddles for years of Oracle changes. I guess we need to edit that message in some way now to avoid it. > client_version=11.2 > > > DEFINE= -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"11.2.0.2\" > -DORA_OCI_102 -DORA_OCI_112 > Thanks for taking the time to report it. Martin -- Martin J. Evans Easysoft Limited http://www.easysoft.com