0

我想DBD::Oracle在 Cygwin 中安装模块。我已在C:\Oracle\instantclient_12_1. 我还下载了 SDK 和 SQLPlus 并将它们提取到 Instantclient_12_1 目录中。我将我的 ORACLE_HOME 路径设置为export ORACLE_HOME=/cygdrive/c/Oracle/instantclient_12_1LD_LIBRARY_PATH 为export LD_LIBRARY_PATH=/cygdrive/c/Oracle/instantclient_12_1/lib. 当我尝试安装软件包时,我得到以下信息:

I'm having trouble finding your Oracle version number... trying harder

WARNING: I could not determine Oracle client version so I'll just
default to version 8.0.0.0. Some features of DBD::Oracle may not work.
Oracle version based logic in Makefile.PL may produce erroneous results.
You can use "perl Makefile.PL -V X.Y.Z" to specify a your client version.

Oracle version 8.0.0.0 (8.0)
DBD::Oracle no longer supports Oracle client versions before 9.2
 Try a version before 1.25 for 9 and 1.18 for 8! at Makefile.PL line 271.
Warning: No success on command[/usr/bin/perl Makefile.PL]
'YAML' not installed, will not store persistent state
  PYTHIAN/DBD-Oracle-1.66.tar.gz
  /usr/bin/perl Makefile.PL -- NOT OK
Running make test
  Make had some problems, won't test
Running make install
  Make had some problems, won't install

为什么安装程序无法检测到版本?我应该怎么做才能成功安装模块?

编辑:按照下面的建议,我尝试了perl Makefile.PL -V 12.1.0. 我得到的输出为:

Installing on a cygwin, Ver#1.7
Using Oracle in /cygdrive/c/Oracle/instantclient_12_1

            If sqlplus failed due to a linker/symbol/relocation/library error or similar problem
            then it's likely that you've not configured your environment correctly.
            Specifically, your PATH environment variable
            set to include the directory containing the Oracle libraries.

Forcing Oracle version to be treated as 12.1.0
Oracle version 12.1.0 (12.1)
Using OCI directory 'sdk'

client_version=12.1


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


Checking for functioning wait.ph


System: perl5.014004 cygwin_nt-6.1 yaakov04 1.7.18(0.26353) 2013-03-07 19:25 x86_64 cygwin
Compiler:   gcc -O3 -DPERL_USE_SAFE_PUTENV -U__STRICT_ANSI__ -fno-strict-aliasing -pipe -fstack-protector
Linker:     /usr/bin/ld
Sysliblist:

Checking if your kit is complete...
Looks good
LD_RUN_PATH=/cygdrive/c/Oracle/instantclient_12_1/lib:/cygdrive/c/Oracle/instantclient_12_1/rdbms/lib
Using DBD::Oracle 1.66.
Using DBD::Oracle 1.66.
Using DBI 1.623 (for perl 5.014004 on cygwin-thread-multi) installed in /usr/lib/perl5/vendor_perl/5.14/x86_64-cygwin-threads/auto/DBI/
Generating a GNU-style Makefile
Writing Makefile for DBD::Oracle
Writing MYMETA.yml and MYMETA.json

但之后make, make test and make install,该模块仍未正确安装,我无法使用它运行任何脚本(make test返回 37/38 失败案例)。我无法看到如何进行。

4

2 回答 2

1

在我以管理员身份运行 CygWin 终端并且一切正常后,我遵循了本指南。

当然,您需要下载32 位 win .zip 版本而不是 .rpm 文件:

  • 即时客户端-基本-*
  • Instantclient-sqlplus*(帮助确定 oracle 版本)
  • 即时客户端 SDK*

并将它们全部解压缩到例如。c:\甲骨文\

以管理员身份启动 Cygwin 终端并执行以下步骤:

export ORACLE_HOME=/cygdrive/c/Oracle/instantclient_12_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export ORACLE_DSN=DBI:Oracle:host=<oracle hostname>;sid=<oracle sid>
export ORACLE_USERID=user/password@<sid>

cpan get DBD::Oracle

cd 进入 .cpan/build/DBD-Oracle* 文件夹

perl Makefile.PL

make

make install

检查cpan DBD::Oracle以验证安装。

于 2014-10-21T15:07:31.563 回答
0

您是否尝试按照说明进行操作并说:

perl Makefile.PL -V 12.1.0

?

于 2013-11-26T04:12:24.080 回答