有人可以指导我如何安装Perl DBD::Oracle
模块吗?
这是我到目前为止所做的:
$ORACLE_HOME
和$LD_LIBRARY_PATH
然后当我perl Makefile.pl
时,它失败并出现以下错误:
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.
即时客户端版本:11.1.0
DBD::Oracle
版本为1.44 如果您已成功安装Oracle即时客户端,那么请告诉我我错过了什么?
是否可以在不使用Oracle即时客户端的情况下安装DBD::Oracle
?
答案 0 :(得分:40)
$ yum install perl-DBI
)为Oracle即时客户端手动安装以下三个RPM(来自Instant Client Downloads for Linux x86-64)
oracle-instantclient11.2-basic-11.2.0.3.0-1
oracle-instantclient11.2-devel-11.2.0.3.0-1
oracle-instantclient11.2-sqlplus-11.2.0.3.0-1
我正在使用64位Linux机器,因此请相应地选择您的RPM文件名。
设置以下变量:
LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
ORACLE_HOME=/usr/lib/oracle/11.2/client64
MacOS用户需要:
DYLD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/
同时将ORACLE_HOME
添加到您的PATH
变量。
从CPAN下载 DBD :: Oracle
解压模块并按给定顺序运行以下命令:
perl Makefile.PL
make
make install
完成!!!
我遇到的问题是错误的LD_LIBRARY_PATH
。我已将其设置为/usr/lib/oracle/11.2/client64
,而正确的值为/usr/lib/oracle/11.2/client64/lib
。
当然,对于像我这样的新手来说,这是一个很好的学习。
答案 1 :(得分:6)
您还可以阅读我的文章How to install DBD::Oracle,其中包含安装DBD :: Oracle CPAN模块所需的所有步骤,这不是一个简单的安装。目的是减少头痛并将其转化为可重复的过程。
答案 2 :(得分:2)
这是我使用yum软件包和CPAN在CentOS 7.2上所做的。这假设您使用的是Oracle 12.1版,但我认为大多数版本都会以这种方式工作。
安装Oracle Instant Client
yum install oracle-instantclient12.1-basic-12.1.0.2.0-1 oracle-instantclient12.1-devel-12.1.0.2.0-1 oracle-instantclient12.1-sqlplus-12.1.0.2.0-1
复制演示生成文件
安装期望* .mk文件位于/usr/share/oracle/12.1/client64中,但yum软件包安装将它们放在/usr/share/oracle/12.1/client64/demo中。
sudo cp /usr/share/oracle/12.1/client64/demo/* /usr/share/oracle/12.1/client64
修改.bashrc
将以下行添加到〜/ .bashrc
export ORACLE_HOME=/usr/lib/oracle/12.1/client64
export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
export PATH=$ORACLE_HOME:$PATH
现在来源文件
source ~/.bashrc
更新CPAN和DBI
将CPAN和DBI更新为最新的
cpan> install CPAN
cpan> reload cpan
cpan> install DBI
安装DBD :: Oracle
cpan> install DBD::Oracle
答案 3 :(得分:0)
slayedbylucifer回答的一点点补充。我遇到了问题中提到的同样的问题。我已经完成了slayedbylucifer描述的所有步骤。但我仍然遇到了提到here的问题:
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
myModel = Content.Load<Model>("http://mywebservice.com/getXNBModel/1/");
}
所以我创建了以下符号链接:
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /opt/oracle/app/oracle/product/11.2.0/client_1/lib//libclntsh.so when searching for -lclntsh
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lclntsh
在该步骤之后,修复了上面的错误(找不到-lclntsh)。执行make命令没有任何错误。
我唯一的问题是我不明白为什么这个符号链接是必要的。