我正试图在RHEL6.1服务器上安装Perl模块DBD::Oracle。在这样做的时候,我遵循了以下步骤:
-
安装以下RPM:
- oracle-instant客户端12.1-基本12.1.0.2.0-1.x86_64rpm
- oracle-instant客户端12.1-devel-12.1.0.2.0-1.x86_64rpm
- oracle-instant客户端12.1-sqlplus-12.1.0.2.0-1.x86_64rpm
-
导出环境变量
export ORACLE_HOME=/usr/lib/oracle/12.1/client64
export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
-
安装DBD::Oracle
cpan -i DBD::Oracle
在这样做的时候,它会给出以下错误消息:
Installing on a linux, Ver#2.6
Using Oracle in /usr/lib/oracle/12.1/client64
DEFINE _SQLPLUS_RELEASE = "1201000200" (CHAR)
Oracle version 12.1.0.2 (12.1)
Unable to locate an oracle.mk or other suitable *.mk
file in your Oracle installation. (I looked in
/usr/lib/oracle/12.1/client64/rdbms/demo/demo_xe.mk /usr/lib/oracle/12.1/client64/rdbms/lib/oracle.mk /usr/lib/oracle/12.1/client64/rdbms/demo/oracle.mk /usr/lib/oracle/12.1/client64/rdbms/demo/demo_rdbms.mk /usr/lib/oracle/12.1/client64/rdbms/demo/demo_rdbms64.mk /usr/lib/oracle/12.1/client64/rdbms/lib/ins_rdbms.mk /usr/share/oracle/12.1/client64/demo.mk under /usr/lib/oracle/12.1/client64)
The oracle.mk (or demo_rdbms.mk) file is part of the Oracle
RDBMS product. You need to build DBD::Oracle on a
system which has one of these Oracle components installed.
(Other *.mk files such as the env_*.mk files will not work.)
Alternatively you can use Oracle Instant Client.
In the unlikely event that a suitable *.mk file is installed
somewhere non-standard you can specify where it is using the -m option:
perl Makefile.PL -m /path/to/your.mk
See the appropriate README file for your OS for more information and some alternatives.
at Makefile.PL line 1187.
Warning: No success on command[/usr/bin/perl Makefile.PL INSTALLDIRS=site]
PYTHIAN/DBD-Oracle-1.74.tar.gz
/usr/bin/perl Makefile.PL INSTALLDIRS=site -- NOT OK
Running make test
Make had some problems, won't test
Running make install
Make had some problems, won't install
安装过程出了什么问题?我遵循了这个指南。
安装和设置Oracle Instant Client后,使用不带cpan工具的正常构建步骤,并将-l
选项传递给Makefile.PL
-
下载
tar.gz
包并打开 -
构建
perl Makefile.PL -l make && make test
-
安装
make install
实际上,如果你想使用rpms和cpan进行安装,你必须将ORACLE_HOME设置到lib文件夹,而不仅仅是client64,并将sqlplus添加到路径:
export ORACLE_HOME=/usr/lib/oracle/12.1/client64/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/12.1/client64/lib/
export PATH=$PATH:/usr/lib/oracle/12.1/client64/bin
其中CCD_ 6不返回错误。
CPAN安装程序唯一找不到的就是一个合适的*.mk文件。Oracle一定在和CPAN安装程序玩猫捉老鼠的游戏,因为安装程序正在多个位置搜索多个文件名
我使用命令
locate -r '.mk$'
发现demo.mk现在位于/usr/lib/oracle/12.1/client64/demo/
而不是/usr/lib/oracle/12.1/client64/
所以我创建了一个符号链接
sudo ln -s /usr/share/oracle/12.1/client64/demo/demo.mk /usr/share/oracle/12.1/client64/demo.mk
并且CPAN安装程序成功。
通过安装以下3个即时客户端RPM包,我能够使用CPAN安装11.2.0.4版的DBD::Oracle:
- oracle-instant客户端11.2-sqlplus-11.2.0.4.0-1.x86_64
- oracle-instant客户端11.2-devel-11.2.0.4.0-1.x86_64
- oracle-instant客户端11.2-基础11.2.0.4.0-1.x86_64
一旦我安装了这些,cpan就可以构建了。这是在CentOS 7.3.1611中提供的。
在开始之前,您需要:
-
下载Oracle 12c即时客户端和SDK:
- instantclient-basic-linux.x64-12.2.0.1.0.zip
- instantclient-sdk-linux.x64-12.2.0.1.0.zip
- instantclient-sqlplus-linux.x64-12.2.0.1.0.zip
-
使用以下命令安装:
sudo apt-get install libaio1
-
使用以下命令下载并打开DBD::Oracle包:
cpan get DBD::Oracle
如果你有DBD::Oracle 1.74+Oracle 12c(12.2.0.1)和Windows 10下的Ubuntu 18应用程序,那么你需要更多的更改。
-
Makefile.PL 中的注释行1613
#local $ENV{PATH} = join $Config{path_sep}, "$OH_path/bin", $OH_path, $ENV{PATH} if $OH;
-
替换行1630
my$sqlplus_release=`sqlplus-S/nolog \@define.sql`;
带有行
my $sqlplus_release = qq {SQL> DEFINE _SQLPLUS_RELEASE
DEFINE _SQLPLUS_RELEASE = "1202000100" (CHAR)
SQL> QUIT};
执行Perl脚本为:
perl Makefile.PL -l
将第569-581行(因为Windows下的Ubuntu不支持带冒号的路径)替换为以下行:
lib/DBD/Oracle.pm $(INST_MAN3DIR)/DBD_Oracle.$(MAN3EXT) lib/DBD/Oracle/GetInfo.pm $(INST_MAN3DIR)/DBD_Oracle_GetInfo.$(MAN3EXT) lib/DBD/Oracle/Object.pm $(INST_MAN3DIR)/DBD_Oracle_Object.$(MAN3EXT) lib/DBD/Oracle/Troubleshooting.pod $(INST_MAN3DIR)/DBD_Oracle_Troubleshooting.$(MAN3EXT) lib/DBD/Oracle/Troubleshooting/Aix.pod $(INST_MAN3DIR)/DBD_Oracle_Troubleshooting_Aix.$(MAN3EXT) lib/DBD/Oracle/Troubleshooting/Cygwin.pod $(INST_MAN3DIR)/DBD_Oracle_Troubleshooting_Cygwin.$(MAN3EXT) lib/DBD/Oracle/Troubleshooting/Hpux.pod $(INST_MAN3DIR)/DBD_Oracle_Troubleshooting_Hpux.$(MAN3EXT) lib/DBD/Oracle/Troubleshooting/Linux.pod $(INST_MAN3DIR)/DBD_Oracle_Troubleshooting_Linux.$(MAN3EXT) lib/DBD/Oracle/Troubleshooting/Macos.pod $(INST_MAN3DIR)/DBD_Oracle_Troubleshooting_Macos.$(MAN3EXT) lib/DBD/Oracle/Troubleshooting/Sun.pod $(INST_MAN3DIR)/DBD_Oracle_Troubleshooting_Sun.$(MAN3EXT) lib/DBD/Oracle/Troubleshooting/Vms.pod $(INST_MAN3DIR)/DBD_Oracle_Troubleshooting_Vms.$(MAN3EXT) lib/DBD/Oracle/Troubleshooting/Win32.pod $(INST_MAN3DIR)/DBD_Oracle_Troubleshooting_Win32.$(MAN3EXT) lib/DBD/Oracle/Troubleshooting/Win64.pod $(INST_MAN3DIR)/DBD_Oracle_Troubleshooting_Win64.$(MAN3EXT)
- 使用命令生成:
make && make test
- 使用命令安装
sudo make install
希望您在开始之前已经安装了所有的先决条件。