Sample Header Ad - 728x90

Installing DBD:Oracle on RedHat 8.8

0 votes
3 answers
3150 views
I am trying to install DBD:Oracle. I'm in the following environment: Red Hat Enterprise Linux release 8.8 (Ootpa) Perl v5.26.3 Our DBA installed the Oracle 19 client in this location: /u01/app/oracle/product/19.0.0/client_1 I have the following environment variables set up: ORACLE_HOME="/u01/app/oracle/product/19.0.0/client_1" PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/u01/app/oracle/product/19.0.0/client_1/bin" LD_LIBRARY_PATH=":/u01/app/oracle/product/19.0.0/client_1/lib" When I run cpan install DBD::Oracle as root, I get a bunch of compiler warnings, and the linker fails with this error: /usr/bin/ld: cannot find -lnsl I'm at a loss with how to proceed. Any advice would be appreciated. Here's the output of the cpan command:
Reading '/root/.local/share/.cpan/Metadata'
  Database was generated on Sat, 12 Aug 2023 15:17:02 GMT
Running install for module 'DBD::Oracle'
CPAN: Digest::SHA loaded ok (v6.02)
CPAN: Compress::Zlib loaded ok (v2.081)
Checksum for /root/.local/share/.cpan/sources/authors/id/Z/ZA/ZARQUON/DBD-Oracle-1.83.tar.gz ok
'YAML' not installed, will not store persistent state
CPAN: CPAN::Meta::Requirements loaded ok (v2.140)
CPAN: Parse::CPAN::Meta loaded ok (v2.150010)
CPAN: CPAN::Meta loaded ok (v2.150010)
CPAN: Module::CoreList loaded ok (v5.20181130)
Configuring Z/ZA/ZARQUON/DBD-Oracle-1.83.tar.gz with Makefile.PL
Multiple copies of Driver.xst found in: /usr/local/lib64/perl5/auto/DBI/ /usr/lib64/perl5/vendor_perl/auto/DBI/ at Makefile.PL line 36.
Using DBI 1.643 (for perl 5.026003 on x86_64-linux-thread-multi) installed in /usr/local/lib64/perl5/auto/DBI/
Configuring DBD::Oracle for perl 5.026003 on linux (x86_64-linux-thread-multi)

If you encounter any problem, a collection of troubleshooting
guides are available under lib/DBD/Oracle/Troubleshooting.
'DBD::Oracle::Troubleshooting' is the general troubleshooting
guide, while platform-specific troubleshooting hints
live in their labelled sub-document (e.g., Win32
hints are gathered in 'lib/DBD/Oracle/Troubleshooting/Win32.pod').

Installing on a linux, Ver#4.18
Using Oracle in /u01/app/oracle/product/19.0.0/client_1
DEFINE _SQLPLUS_RELEASE = "1903000000" (CHAR)
Oracle Version 19.3.0.0 (19.3)
Found direct-link candidates: libclntsh.so
Oracle sysliblist: -ldl -lm -lpthread -lnsl -lirc -limf -lirc -lrt -laio -lresolv -lsvml 
Found header files in /u01/app/oracle/product/19.0.0/client_1/rdbms/public.
Your LD_LIBRARY_PATH env var is set to ':/u01/app/oracle/product/19.0.0/client_1/lib'

client_version=19.3


DEFINE= -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"19.3.0.0\" -DORA_OCI_102 -DORA_OCI_112


Checking for functioning wait.ph


System: perl5.026003 linux x86-64-02.build.eng.rdu2.redhat.com 4.18.0-305.25.1.el8_4.x86_64 #1 smp mon oct 18 14:34:11 edt 2021 x86_64 x86_64 x86_64 gnulinux 
Compiler:   gcc   -g -D_REENTRANT -D_GNU_SOURCE -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fwrapv -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
Linker:     /usr/bin/ld
Sysliblist: -ldl -lm -lpthread -lnsl -lirc -limf -lirc -lrt -laio -lresolv -lsvml 
Linking with -lclntsh.

Checking if your kit is complete...
Looks good
LD_RUN_PATH=/u01/app/oracle/product/19.0.0/client_1/lib:/lib64
Using DBD::Oracle 1.83.
Using DBD::Oracle 1.83.
Multiple copies of Driver.xst found in: /usr/local/lib64/perl5/auto/DBI/ /usr/lib64/perl5/vendor_perl/auto/DBI/ at Makefile.PL line 1808.
Using DBI 1.643 (for perl 5.026003 on x86_64-linux-thread-multi) installed in /usr/local/lib64/perl5/auto/DBI/
Generating a Unix-style Makefile
Writing Makefile for DBD::Oracle
Writing MYMETA.yml and MYMETA.json

  ZARQUON/DBD-Oracle-1.83.tar.gz
  /usr/bin/perl Makefile.PL -- OK
Running make for Z/ZA/ZARQUON/DBD-Oracle-1.83.tar.gz
cp lib/DBD/Oracle/Troubleshooting/Vms.pod blib/lib/DBD/Oracle/Troubleshooting/Vms.pod
cp lib/DBD/Oracle/Troubleshooting/Win32.pod blib/lib/DBD/Oracle/Troubleshooting/Win32.pod
cp lib/DBD/Oracle/Troubleshooting/Linux.pod blib/lib/DBD/Oracle/Troubleshooting/Linux.pod
cp mk.pm blib/arch/auto/DBD/Oracle/mk.pm
cp lib/DBD/Oracle/Troubleshooting/Win64.pod blib/lib/DBD/Oracle/Troubleshooting/Win64.pod
cp Oracle.h blib/arch/auto/DBD/Oracle/Oracle.h
cp lib/DBD/Oracle/Troubleshooting.pod blib/lib/DBD/Oracle/Troubleshooting.pod
cp lib/DBD/Oracle/Object.pm blib/lib/DBD/Oracle/Object.pm
cp lib/DBD/Oracle/Troubleshooting/Macos.pod blib/lib/DBD/Oracle/Troubleshooting/Macos.pod
cp ocitrace.h blib/arch/auto/DBD/Oracle/ocitrace.h
cp lib/DBD/Oracle/Troubleshooting/Cygwin.pod blib/lib/DBD/Oracle/Troubleshooting/Cygwin.pod
cp lib/DBD/Oracle/Troubleshooting/Sun.pod blib/lib/DBD/Oracle/Troubleshooting/Sun.pod
cp dbdimp.h blib/arch/auto/DBD/Oracle/dbdimp.h
cp lib/DBD/Oracle.pm blib/lib/DBD/Oracle.pm
cp lib/DBD/Oracle/Troubleshooting/Hpux.pod blib/lib/DBD/Oracle/Troubleshooting/Hpux.pod
cp lib/DBD/Oracle/GetInfo.pm blib/lib/DBD/Oracle/GetInfo.pm
cp lib/DBD/Oracle/Troubleshooting/Aix.pod blib/lib/DBD/Oracle/Troubleshooting/Aix.pod
Running Mkbootstrap for Oracle ()
chmod 644 "Oracle.bs"
"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Oracle.bs blib/arch/auto/DBD/Oracle/Oracle.bs 644
"/usr/bin/perl" -p -e "s/~DRIVER~/Oracle/g" /usr/local/lib64/perl5/auto/DBI/Driver.xst > Oracle.xsi
"/usr/bin/perl" "/usr/share/perl5/vendor_perl/ExtUtils/xsubpp"  -typemap '/usr/share/perl5/ExtUtils/typemap' -typemap '/root/.local/share/.cpan/build/DBD-Oracle-1.83-6/typemap'  Oracle.xs > Oracle.xsc
mv Oracle.xsc Oracle.c
gcc -c  -I/u01/app/oracle/product/19.0.0/client_1/rdbms/public -I/usr/local/lib64/perl5/auto/DBI -D_REENTRANT -D_GNU_SOURCE -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fwrapv -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g   -DVERSION=\"1.83\" -DXS_VERSION=\"1.83\" -fPIC "-I/usr/lib64/perl5/CORE"  -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"19.3.0.0\" -DORA_OCI_102 -DORA_OCI_112 Oracle.c
In file included from dbdimp.h:445,
                 from Oracle.h:52,
                 from Oracle.xs:1:
Oracle.xs: In function ‘XS_DBD__Oracle__db_ora_db_startup’:
Oracle.xs:330:82: warning: macro expands to multiple statements [-Wmultistatement-macros]
  if (admhp) OCIHandleFree_log_stat(imp_dbh, (dvoid*)admhp, (ub4)OCI_HTYPE_ADMIN, status);
                                                                                  ^~~~~~
ocitrace.h:411:2: note: in definition of macro ‘OCIHandleFree_log_stat’
  stat=OCIHandleFree( (hp), (t));    \
  ^~~~
Oracle.xs:330:2: note: some parts of macro expansion are not guarded by this ‘if’ clause
  if (admhp) OCIHandleFree_log_stat(imp_dbh, (dvoid*)admhp, (ub4)OCI_HTYPE_ADMIN, status);
  ^~
gcc -c  -I/u01/app/oracle/product/19.0.0/client_1/rdbms/public -I/usr/local/lib64/perl5/auto/DBI -D_REENTRANT -D_GNU_SOURCE -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fwrapv -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g   -DVERSION=\"1.83\" -DXS_VERSION=\"1.83\" -fPIC "-I/usr/lib64/perl5/CORE"  -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"19.3.0.0\" -DORA_OCI_102 -DORA_OCI_112 dbdimp.c
In file included from dbdimp.h:445,
                 from Oracle.h:52,
                 from dbdimp.c:21:
dbdimp.c: In function ‘ora_db_login6’:
dbdimp.c:923:57: warning: macro expands to multiple statements [-Wmultistatement-macros]
        (ub4) OCI_ATTR_CONNECTION_CLASS, imp_dbh->errhp, status);
                                                         ^~~~~~
ocitrace.h:325:2: note: in definition of macro ‘OCIAttrSet_log_stat’
  stat=OCIAttrSet(th,ht,ah,s1,a,eh);    \
  ^~~~
dbdimp.c:920:4: note: some parts of macro expansion are not guarded by this ‘if’ clause
    if (imp_dbh->pool_class) /*pool_class may or may not be used */
    ^~
dbdimp.c: In function ‘ora_bind_ph’:
dbdimp.c:3401:4: warning: increment of a boolean expression [-Wbool-operation]
    ++imp_sth->has_inout_params;
    ^~
In file included from dbdimp.h:445,
                 from Oracle.h:52,
                 from dbdimp.c:21:
dbdimp.c: In function ‘ora_free_phs_contents’:
ocitrace.h:380:2: warning: macro expands to multiple statements [-Wmultistatement-macros]
  if (DBD_OCI_TRACEON(impxxh)) PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
  ^~
dbdimp.c:4395:9: note: in expansion of macro ‘OCIDescriptorFree_log’
         OCIDescriptorFree_log(imp_sth, phs->desc_h, phs->desc_t);
         ^~~~~~~~~~~~~~~~~~~~~
dbdimp.c:4394:2: note: some parts of macro expansion are not guarded by this ‘if’ clause
  if (phs->desc_h)
  ^~
dbdimp.c: In function ‘dump_env_to_trace’:
dbdimp.c:4764:29: warning: comparison between pointer and zero character constant [-Wpointer-compare]
  } while ((char*)environ[i] != '\0');
                             ^~
dbdimp.c:4764:11: note: did you mean to dereference the pointer?
  } while ((char*)environ[i] != '\0');
           ^
gcc -c  -I/u01/app/oracle/product/19.0.0/client_1/rdbms/public -I/usr/local/lib64/perl5/auto/DBI -D_REENTRANT -D_GNU_SOURCE -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fwrapv -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g   -DVERSION=\"1.83\" -DXS_VERSION=\"1.83\" -fPIC "-I/usr/lib64/perl5/CORE"  -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION=\"19.3.0.0\" -DORA_OCI_102 -DORA_OCI_112 oci8.c
oci8.c:18: warning: "sv_set_undef" redefined
 #define sv_set_undef(sv) if (SvROK(sv)) sv_unref(sv); else SvOK_off(sv)
 
In file included from /usr/lib64/perl5/CORE/perl.h:5644,
                 from /usr/local/lib64/perl5/auto/DBI/DBIXS.h:23,
                 from Oracle.h:50,
                 from oci8.c:12:
/usr/lib64/perl5/CORE/embed.h:673: note: this is the location of the previous definition
 #define sv_set_undef(a)  Perl_sv_set_undef(aTHX_ a)
 
In file included from dbdimp.h:445,
                 from Oracle.h:52,
                 from oci8.c:12:
oci8.c: In function ‘init_lob_refetch’:
ocitrace.h:380:2: warning: macro expands to multiple statements [-Wmultistatement-macros]
  if (DBD_OCI_TRACEON(impxxh)) PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
  ^~
oci8.c:4571:3: note: in expansion of macro ‘OCIDescriptorFree_log’
   OCIDescriptorFree_log(imp_sth, colhd, OCI_DTYPE_PARAM);
   ^~~~~~~~~~~~~~~~~~~~~
oci8.c:4570:2: note: some parts of macro expansion are not guarded by this ‘if’ clause
  if (colhd)
  ^~
In file included from dbdimp.h:445,
                 from Oracle.h:52,
                 from oci8.c:12:
oci8.c: In function ‘ora_free_lob_refetch’:
ocitrace.h:380:2: warning: macro expands to multiple statements [-Wmultistatement-macros]
  if (DBD_OCI_TRACEON(impxxh)) PerlIO_printf(DBD_OCI_TRACEFP(impxxh), \
  ^~
oci8.c:4911:3: note: in expansion of macro ‘OCIDescriptorFree_log’
   OCIDescriptorFree_log(imp_sth, lr->rowid, OCI_DTYPE_ROWID);
   ^~~~~~~~~~~~~~~~~~~~~
oci8.c:4910:2: note: some parts of macro expansion are not guarded by this ‘if’ clause
  if (lr->rowid)
  ^~
oci8.c: In function ‘get_attr_val’:
oci8.c:2337:25: warning: ‘%02d’ directive writing between 2 and 4 bytes into a region of size 2 [-Wformat-overflow=]
     sprintf(s_tz_hour," %02d",tz_hour);
                         ^~~~
oci8.c:2337:23: note: directive argument in the range [-128, 127]
     sprintf(s_tz_hour," %02d",tz_hour);
                       ^~~~~~~
In file included from /usr/include/stdio.h:873,
                 from /usr/lib64/perl5/CORE/perlio.h:41,
                 from /usr/lib64/perl5/CORE/iperlsys.h:51,
                 from /usr/lib64/perl5/CORE/perl.h:3880,
                 from /usr/local/lib64/perl5/auto/DBI/DBIXS.h:23,
                 from Oracle.h:50,
                 from oci8.c:12:
/usr/include/bits/stdio2.h:36:10: note: ‘__builtin___sprintf_chk’ output between 4 and 6 bytes into a destination of size 3
   return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       __glibc_objsize (__s), __fmt,
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       __va_arg_pack ());
       ~~~~~~~~~~~~~~~~~
oci8.c:2335:25: warning: ‘%03d’ directive writing between 3 and 4 bytes into a region of size 2 [-Wformat-overflow=]
     sprintf(s_tz_hour," %03d",tz_hour);
                         ^~~~
oci8.c:2335:23: note: directive argument in the range [-128, 127]
     sprintf(s_tz_hour," %03d",tz_hour);
                       ^~~~~~~
In file included from /usr/include/stdio.h:873,
                 from /usr/lib64/perl5/CORE/perlio.h:41,
                 from /usr/lib64/perl5/CORE/iperlsys.h:51,
                 from /usr/lib64/perl5/CORE/perl.h:3880,
                 from /usr/local/lib64/perl5/auto/DBI/DBIXS.h:23,
                 from Oracle.h:50,
                 from oci8.c:12:
/usr/include/bits/stdio2.h:36:10: note: ‘__builtin___sprintf_chk’ output between 5 and 6 bytes into a destination of size 3
   return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       __glibc_objsize (__s), __fmt,
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       __va_arg_pack ());
       ~~~~~~~~~~~~~~~~~
oci8.c:2340:23: warning: ‘%02d’ directive writing between 2 and 4 bytes into a region of size 2 [-Wformat-overflow=]
    sprintf(s_tz_min,":%02d", tz_minute);
                       ^~~~
oci8.c:2340:21: note: directive argument in the range [-128, 127]
    sprintf(s_tz_min,":%02d", tz_minute);
                     ^~~~~~~
In file included from /usr/include/stdio.h:873,
                 from /usr/lib64/perl5/CORE/perlio.h:41,
                 from /usr/lib64/perl5/CORE/iperlsys.h:51,
                 from /usr/lib64/perl5/CORE/perl.h:3880,
                 from /usr/local/lib64/perl5/auto/DBI/DBIXS.h:23,
                 from Oracle.h:50,
                 from oci8.c:12:
/usr/include/bits/stdio2.h:36:10: note: ‘__builtin___sprintf_chk’ output between 4 and 6 bytes into a destination of size 3
   return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       __glibc_objsize (__s), __fmt,
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       __va_arg_pack ());
       ~~~~~~~~~~~~~~~~~
rm -f blib/arch/auto/DBD/Oracle/Oracle.so
gcc  -lpthread -shared -Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -L/usr/local/lib -fstack-protector-strong  Oracle.o dbdimp.o oci8.o  -o blib/arch/auto/DBD/Oracle/Oracle.so  \
   -L/u01/app/oracle/product/19.0.0/client_1/lib -lclntsh -ldl -lm -lpthread -lnsl -lirc -limf -lirc -lrt -laio -lresolv -lsvml -lperl   \
  
/usr/bin/ld: cannot find -lnsl
collect2: error: ld returned 1 exit status
make: *** [Makefile:524: blib/arch/auto/DBD/Oracle/Oracle.so] Error 1
  ZARQUON/DBD-Oracle-1.83.tar.gz
  /bin/make -- NOT OK
Asked by Stev (1 rep)
Aug 12, 2023, 10:49 PM
Last activity: Apr 11, 2025, 06:03 AM