1、安装之前,先检查一下当前系统中Perl的版本
[root@arcerzhang ~]# perl -v This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi Copyright 1987-2009, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using "man perl" or "perldoc perl". If you have access to the Internet, point your browser at http://www.perl.org/, the Perl Home Page.
2、执行脚本,验证当前系统中安装了哪些Perl modules?
#!/usr/bin/perl use strict; use ExtUtils::Installed; my $inst=ExtUtils::Installed->new(); my @modules = $inst->modules(); foreach(@modules){ my $ver = $inst->version($_) || "???"; printf("%-12s -- %s ",$_,$ver); } exit;
[root@arcerzhang scripts]# /root/scripts/chk2.pl DBI -- 1.627 Perl -- 5.10.1
3、安装模块DBI-1.627.tar.gz,具体安装包自行到官方网站下载(www.cpan.org)
具体安装步骤
- perl Makefile.PL
- make
- make test
- make test TEST_VERBOSE=1(if any of the t/* tests fail)
- make install (if the tests look okay)
安装完成后,可以再次执行验证脚本,查看时候已经安装成功DBI模块
[root@arcerzhang scripts]# /root/scripts/chk2.pl DBI -- 1.627 Perl -- 5.10.1
4、安装模块DBD-Oracle-1.64.tar.gz,具体安装包自行到官方网站下载(www.cpan.org)
首先在安装DBD-Oracle-1.64.tar.gz之前,需要先安装oracle 的example的包;
[root@arcerzhang DBD-Oracle-1.64]# export ORACLE_HOME='/u01/oracle' [root@arcerzhang DBD-Oracle-1.64]# export ORACLE_USERID='SCOTT/TIGER@DB234' [root@arcerzhang DBD-Oracle-1.64]# export path=$ORACLE_HOME/bin:$PATH [root@arcerzhang DBD-Oracle-1.64]# export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
[root@arcerzhang DBD-Oracle-1.64]# perl Makefile.PL Multiple copies of Driver.xst found in: /usr/local/lib64/perl5/auto/DBI/ /usr/lib64/perl5/auto/DBI/ at Makefile.PL line 39 Using DBI 1.627 (for perl 5.010001 on x86_64-linux-thread-multi) installed in /usr/local/lib64/perl5/auto/DBI/ Configuring DBD::Oracle for perl 5.010001 on linux (x86_64-linux-thread-multi) Remember to actually *READ* the README file! Especially if you have any problems. Installing on a linux, Ver#2.6 Using Oracle in /u01/oracle DEFINE _SQLPLUS_RELEASE = "1102000100" (CHAR) Oracle version 11.2.0.1 (11.2) Found /u01/oracle/rdbms/demo/demo_rdbms.mk Found /u01/oracle/rdbms/demo/demo_rdbms64.mk Found /u01/oracle/rdbms/lib/ins_rdbms.mk Using /u01/oracle/rdbms/demo/demo_rdbms.mk Your LD_LIBRARY_PATH env var is set to '/u01/oracle/lib:' Reading /u01/oracle/rdbms/demo/demo_rdbms.mk Reading /u01/oracle/rdbms/lib/env_rdbms.mk Attempting to discover Oracle OCI build rules gcc -c -o DBD_ORA_OBJ.o DBD_ORA_OBJ.c by executing: [make -f /u01/oracle/rdbms/demo/demo_rdbms.mk build ECHODO=echo ECHO=echo GENCLNTSH='echo genclntsh' CC=true OPTIMIZE= CCFLAGS= EXE=DBD_ORA_EXE OBJS=DBD_ORA_OBJ.o] Oracle oci build command: [true -L/u01/oracle/lib/ -L/u01/oracle/rdbms/lib/ -o DBD_ORA_EXE DBD_ORA_OBJ.o -lclntsh `cat /u01/oracle/lib/sysliblist` -ldl -lm -lpthread] Found header files in /u01/oracle/rdbms/public. client_version=11.2 DEFINE= -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION="11.2.0.1" -DORA_OCI_102 -DORA_OCI_112 Checking for functioning wait.ph System: perl5.010001 linux c6b8.bsys.dev.centos.org 2.6.32-220.el6.x86_64 #1 smp tue dec 6 19:48:22 gmt 2011 x86_64 x86_64 x86_64 gnulinux Compiler: gcc -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 Linker: /usr/bin/ld Sysliblist: -ldl -lm -lpthread -lnsl -lirc -lipgo -lsvml Oracle makefiles would have used these definitions but we override them: CC: $(COMPDIR)/bin/gcc CFLAGS: $(GFLAG) $(OPTIMIZE) $(CDEBUG) $(CCFLAGS) $(PFLAGS) $(SHARED_CFLAG) $(USRFLAGS) [$(GFLAG) -O3 $(CDEBUG) -m32 -trigraphs -fPIC -I/u01/oracle/rdbms/demo -I/u01/oracle/rdbms/public -I/u01/oracle/plsql/public -I/u01/oracle/network/public -DLINUX -D_GNU_SOURCE -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE=1 -DSLTS_ENABLE -DSLMXMX_ENABLE -D_REENTRANT -DNS_THREADS -D__NO_CTYPE=1 -DLDAP_CM $(LPFLAGS) $(PLSQLNCGFLAGS) $(USRFLAGS)] LDFLAGS: $(LDFLAGS32) [-m32 -o $@ -L/u01/oracle/rdbms//lib32/ -L/u01/oracle/lib32/ -L/u01/oracle/lib32/stubs/] Linking with OTHERLDFLAGS = -L/u01/oracle/lib/ -L/u01/oracle/rdbms/lib/ -lclntsh `cat /u01/oracle/lib/sysliblist` -ldl -lm -lpthread [from 'build' rule] Checking if your kit is complete... Looks good LD_RUN_PATH=/u01/oracle/lib:/u01/oracle/rdbms/lib Using DBD::Oracle 1.64. Using DBD::Oracle 1.64. Multiple copies of Driver.xst found in: /usr/local/lib64/perl5/auto/DBI/ /usr/lib64/perl5/auto/DBI/ at Makefile.PL line 1789 Using DBI 1.627 (for perl 5.010001 on x86_64-linux-thread-multi) installed in /usr/local/lib64/perl5/auto/DBI/ Writing Makefile for DBD::Oracle *** If you have problems... read all the log printed above, and the README and README.help.txt files. (Of course, you have read README by now anyway, haven't you?)
[root@arcerzhang DBD-Oracle-1.64]# make cp lib/DBD/Oracle/Troubleshooting/Cygwin.pod blib/lib/DBD/Oracle/Troubleshooting/Cygwin.pod cp lib/DBD/Oracle.pm blib/lib/DBD/Oracle.pm cp Oracle.h blib/arch/auto/DBD/Oracle/Oracle.h cp lib/DBD/Oracle/Troubleshooting/Vms.pod blib/lib/DBD/Oracle/Troubleshooting/Vms.pod cp lib/DBD/Oracle/Troubleshooting/Hpux.pod blib/lib/DBD/Oracle/Troubleshooting/Hpux.pod cp lib/DBD/Oracle/Troubleshooting/Linux.pod blib/lib/DBD/Oracle/Troubleshooting/Linux.pod cp lib/DBD/Oracle/GetInfo.pm blib/lib/DBD/Oracle/GetInfo.pm cp lib/DBD/Oracle/Troubleshooting.pod blib/lib/DBD/Oracle/Troubleshooting.pod cp dbdimp.h blib/arch/auto/DBD/Oracle/dbdimp.h cp ocitrace.h blib/arch/auto/DBD/Oracle/ocitrace.h cp lib/DBD/Oracle/Troubleshooting/Sun.pod blib/lib/DBD/Oracle/Troubleshooting/Sun.pod cp lib/DBD/Oracle/Troubleshooting/Macos.pod blib/lib/DBD/Oracle/Troubleshooting/Macos.pod cp lib/DBD/Oracle/Object.pm blib/lib/DBD/Oracle/Object.pm cp lib/DBD/Oracle/Troubleshooting/Aix.pod blib/lib/DBD/Oracle/Troubleshooting/Aix.pod cp lib/DBD/Oracle/Troubleshooting/Win64.pod blib/lib/DBD/Oracle/Troubleshooting/Win64.pod cp lib/DBD/Oracle/Troubleshooting/Win32.pod blib/lib/DBD/Oracle/Troubleshooting/Win32.pod cp mk.pm blib/arch/auto/DBD/Oracle/mk.pm /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/ExtUtils/xsubpp -typemap /usr/share/perl5/ExtUtils/typemap -typemap typemap Oracle.xs > Oracle.xsc && mv Oracle.xsc Oracle.c gcc -c -I/u01/oracle/rdbms/public -I/u01/oracle/rdbms/demo -I/u01/oracle/rdbms/public -I/u01/oracle/plsql/public -I/u01/oracle/network/public -I/usr/local/lib64/perl5/auto/DBI -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DVERSION="1.64" -DXS_VERSION="1.64" -fPIC "-I/usr/lib64/perl5/CORE" -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION="11.2.0.1" -DORA_OCI_102 -DORA_OCI_112 Oracle.c gcc -c -I/u01/oracle/rdbms/public -I/u01/oracle/rdbms/demo -I/u01/oracle/rdbms/public -I/u01/oracle/plsql/public -I/u01/oracle/network/public -I/usr/local/lib64/perl5/auto/DBI -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DVERSION="1.64" -DXS_VERSION="1.64" -fPIC "-I/usr/lib64/perl5/CORE" -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION="11.2.0.1" -DORA_OCI_102 -DORA_OCI_112 dbdimp.c dbdimp.c: In function ‘ora_db_login6’: dbdimp.c:721: warning: format ‘%d’ expects type ‘int’, but argument 12 has type ‘size_t’ dbdimp.c:721: warning: format ‘%d’ expects type ‘int’, but argument 14 has type ‘size_t’ gcc -c -I/u01/oracle/rdbms/public -I/u01/oracle/rdbms/demo -I/u01/oracle/rdbms/public -I/u01/oracle/plsql/public -I/u01/oracle/network/public -I/usr/local/lib64/perl5/auto/DBI -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DVERSION="1.64" -DXS_VERSION="1.64" -fPIC "-I/usr/lib64/perl5/CORE" -Wall -Wno-comment -DUTF8_SUPPORT -DORA_OCI_VERSION="11.2.0.1" -DORA_OCI_102 -DORA_OCI_112 oci8.c oci8.c: In function ‘ora_blob_read_mb_piece’: oci8.c:1847: warning: format ‘%lu’ expects type ‘long unsigned int’, but argument 6 has type ‘ub4’ Running Mkbootstrap for DBD::Oracle () chmod 644 Oracle.bs rm -f blib/arch/auto/DBD/Oracle/Oracle.so gcc -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic Oracle.o dbdimp.o oci8.o -L/u01/oracle/lib/ -L/u01/oracle/rdbms/lib/ -lclntsh `cat /u01/oracle/lib/sysliblist` -ldl -lm -lpthread -o blib/arch/auto/DBD/Oracle/Oracle.so chmod 755 blib/arch/auto/DBD/Oracle/Oracle.so cp Oracle.bs blib/arch/auto/DBD/Oracle/Oracle.bs chmod 644 blib/arch/auto/DBD/Oracle/Oracle.bs Manifying blib/man3/DBD::Oracle::Troubleshooting.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Cygwin.3pm Manifying blib/man3/DBD::Oracle.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Sun.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Hpux.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Macos.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Vms.3pm Manifying blib/man3/DBD::Oracle::Object.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Aix.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Linux.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Win64.3pm Manifying blib/man3/DBD::Oracle::GetInfo.3pm Manifying blib/man3/DBD::Oracle::Troubleshooting::Win32.3pm
[root@arcerzhang DBD-Oracle-1.64]# make test PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/000-report-versions-tiny.t .. # # # Generated by Dist::Zilla::Plugin::ReportVersions::Tiny v1.08 # perl: 5.010001 (wanted 5.006) on linux from /usr/bin/perl # # Carp => 1.11 (want any version) # Config => <undef> (want any version) # DBI => 1.627 (want 1.51) # Data::Dumper => 2.124 (want any version) # Devel::Peek => 1.04 (want any version) # DynaLoader => 1.10 (want any version) # Encode => 2.35 (want any version) # Exporter => 5.63 (want any version) # ExtUtils::MakeMaker => 6.55_02 (want 6.30) # Math::BigInt => 1.89 (want any version) # Test::More => 0.92 (want 0.88) # Thread::Semaphore => 2.09 (want any version) # strict => 1.04 (want any version) # utf8 => 1.07 (want any version) # vars => 1.01 (want any version) # version => 0.77 (want 0.9901) # warnings => 1.06 (want any version) # # Thanks for using my code. I hope it works for you. # If not, please try and include this output in the bug report. # That will help me reproduce the issue and solve your problem. # t/000-report-versions-tiny.t .. ok t/00versions.t ................ # OCI client library version: 11.2.0.1 t/00versions.t ................ 1/2 # database version: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production t/00versions.t ................ ok t/01base.t .................... ok t/10general.t ................. ok t/12impdata.t ................. ok t/14threads.t ................. ok t/15nls.t ..................... ok t/20select.t .................. ok t/21nchar.t ................... ok t/22nchar_al32utf8.t .......... ok t/22nchar_utf8.t .............. ok t/23wide_db.t ................. ok t/23wide_db_8bit.t ............ ok t/23wide_db_al32utf8.t ........ ok t/24implicit_utf8.t ........... ok t/25plsql.t ................... ok t/26exe_array.t ............... ok t/28array_bind.t .............. ok t/30long.t .................... ok t/31lob.t ..................... 1/12 DBI::db=HASH(0x1a292f0)->disconnect invalidates 1 active statement handle (either destroy statement handles or call finish on them before disconnecting) at t/31lob.t line 216. t/31lob.t ..................... ok t/31lob_extended.t ............ ok t/32xmltype.t ................. ok t/34pres_lobs.t ............... ok t/36lob_leak.t ................ ok t/38taf.t ..................... ok t/39attr.t .................... # Oracle version: 11.2.0.1.0 # client version: 11.2.0.1 t/39attr.t .................... ok t/40ph_type.t ................. ok t/50cursor.t .................. Can't determine open_cursors from v$parameter, so using default t/50cursor.t .................. ok t/51scroll.t .................. ok t/55nested.t .................. ok t/56embbeded.t ................ ok t/58object.t .................. ok t/60reauth.t .................. skipped: ORACLE_USERID_2 not defined. t/70meta.t .................... ok t/80ora_charset.t ............. ok t/rt13865.t ................... ok t/rt74753-utf8-encoded.t ...... ok All tests successful. Test Summary Report ------------------- t/31lob.t (Wstat: 0 Tests: 12 Failed: 0) TODO passed: 9-11 Files=37, Tests=1858, 24 wallclock secs ( 0.31 usr 0.12 sys + 3.28 cusr 1.57 csys = 5.28 CPU) Result: PASS
[root@arcerzhang DBD-Oracle-1.64]# make install Files found in blib/arch: installing files in blib/lib into architecture dependent library tree Installing /usr/local/lib64/perl5/auto/DBD/Oracle/ocitrace.h Installing /usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so Installing /usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.h Installing /usr/local/lib64/perl5/auto/DBD/Oracle/mk.pm Installing /usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.bs Installing /usr/local/lib64/perl5/auto/DBD/Oracle/dbdimp.h Installing /usr/local/lib64/perl5/DBD/Oracle.pm Installing /usr/local/lib64/perl5/DBD/Oracle/Object.pm Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting.pod Installing /usr/local/lib64/perl5/DBD/Oracle/GetInfo.pm Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Win32.pod Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Vms.pod Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Linux.pod Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Win64.pod Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Aix.pod Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Macos.pod Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Sun.pod Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Hpux.pod Installing /usr/local/lib64/perl5/DBD/Oracle/Troubleshooting/Cygwin.pod Installing /usr/local/share/man/man3/DBD::Oracle::GetInfo.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Linux.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Win64.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Aix.3pm Installing /usr/local/share/man/man3/DBD::Oracle.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Sun.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Cygwin.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Vms.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Win32.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Object.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Hpux.3pm Installing /usr/local/share/man/man3/DBD::Oracle::Troubleshooting::Macos.3pm Appending installation info to /usr/lib64/perl5/perllocal.pod
5、验证安装
[root@arcerzhang scripts]# /root/scripts/chk2.pl DBD::Oracle -- 1.64 DBI -- 1.627 Perl -- 5.10.1