我试图从运行OSX 10.6雪豹的intel mac上的远程系统上连接到Oracle 10.2.0.4。我试过使用perl CPAN来安装DBD :: Oracle(DBI工作正常),但得到编译错误。有人可以提供一个易于遵循的指南吗?如何在OSX Snow Leopard上安装perl DBD :: Oracle 10.6
回答
获得一个Mac上安装Perl来与Oracle发挥很好的是一个有点疼痛的 - 一旦它的运行它是太棒了,得到它运行的是一个有点沮丧..
以下为我工作在一个几个不同的intel mac,那里可能是多余的步骤,它可能不会在其他平台相同。
这将需要使用shell,root用户和一点CPANing - 没有什么太繁重
首先为Oracle PAP目录 - 图书馆,即时客户端等
sudo mkdir /usr/oracle_instantClient64
下载并将所有64位即时客户端软件包从oracle中提取到上述目录中
在该目录中为其中一个文件创建一个符号链接
sudo cd /usr/oracle_instantClient64
sudo ln -s /usr/oracle_instantClient64/libclntsh.dylib.10.1 libclntsh.dylib
下面的目录是硬编码到Oracle即时客户端 - 只有天知道为什么 - 所以需要创建和符号链接它
sudo mkdir -p /b/227/rdbms/
sudo cd /b/227/rdbms/
sudo ln -s /usr/oracle_instantClient64/ lib
需要添加一些环境变量,所以编辑/ etc/profile文件和添加它们,所以它们存在于所有用户:
export ORACLE_HOME=/usr/oracle_instantClient64
export DYLD_LIBRARY_PATH=/usr/oracle_instantClient64
现在尝试通过CPAN安装DBD ::甲骨文 - 这将失败,但它意味着任何依赖关系将会被下载并检索模块为我们
sudo perl -MCPAN -e shell
install DBD::Oracle
当失败退出CPAN和头部到您的.cpan/build目录 - 如果你使用CPAN的自动配置它会
cd ~/.cpan/build
如果你没有自动配置,你可以找到你在CPAN
o conf build_dir
一旦在build目录查找刚刚创建(它会被称为像DBD-Oracle的1.28-?)和DBD ::甲骨文DIR建立与下面的命令目录cd进入它。
现在我们需要切换到root用户。根不是默认的OSX启用 - 的详细信息,使看到的apple website
这个帖子一旦以root身份登录,我们需要为根设置上述环境变量:
export ORACLE_HOME=/usr/oracle_instantClient64
export DYLD_LIBRARY_PATH=/usr/oracle_instantClient64
现在同时还以root身份登录,我们需要运行该模块的makefile文件,然后进行,然后再安装
perl Makefile.pl
make
make install
假设所有没有错误日志中摸索出根:我们DBD'd了!如果没有工作,现在是时候出局对任何错误,谷歌,你看到
现在只要安装DBI模块
sudo perl -MCPAN -e shell
install DBI
现在你所有的设置 - 享受佩尔利oracley新生活
从user852637附加信息:
修正该步骤
perl Makefile.pl make install
最后一步应该是
make install
在做什么,你可能会遇到的,看起来像一个错误:
脂:无法打开输入文件:/ var/tmp中// ccIevTzM。出(没有这样的文件或目录)
要纠正这一点,你必须编辑“perl的Makefile.pl”步骤之后创建的文件“Makefile”文件并删除以下文本的所有匹配:
-arch ppc
这将消除错误。
在安装DBI模块期间会发生(2.)中所述的相同错误。你必须编辑
perl Makefile.pl
步骤之后创建的Makefile
并删除以下文本的所有匹配:-arch ppc
这听起来很有用,我注意到在readme.macosx.txt和DBD :: Oracle的10.6中没有任何东西。你介意把它添加到DBD :: Oracle吗? – bohica 2011-05-11 13:44:04
去吧 - 我已经运行这个过程:Macmini3,1; MacPro1,1;和一个旧的MacbookPro(不知道是什么型号的标识符) – beresfordt 2011-05-11 13:48:54
你可以使用'look DBD :: Oracle'来代替退出CPAN shell,找到构建目录和'cd'到它。 – hobbs 2011-05-11 13:51:25
这是一个伟大的指令集。我还有其他一些关于潜在“陷阱”的评论。
修正到了这一步
perl Makefile.pl make install
最后一步应该是
make install
在做什么,你可能会遇到的,看起来像一个错误:
脂:能打开输入文件:/var/tmp//ccIevTzM.out(没有这样的文件或目录)
要纠正这一点,你必须编辑“perl的Makefile.pl”步骤之后创建的文件“Makefile”文件并删除以下文本的所有匹配:
-arch ppc
这将消除错误。
在安装DBI模块期间会发生(2.)中所述的相同错误。你必须编辑
perl Makefile.pl
步骤之后创建的Makefile
并删除以下文本的所有匹配:-arch ppc
固定make步骤,欢呼 – 2011-08-05 13:49:21
它好像在“Perl的MakeFile.pl”命令没有找到正确的Perl的版本和我得到这个错误信息:
bash-3.2# perl Makefile.PL
Multiple copies of Driver.xst found in: /Library/Perl/5.10.0/darwin-thread-multi-2level/auto/DBI/ /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level/auto/DBI/ at Makefile.PL line 37
Using DBI 1.616 (for perl 5.010000 on darwin-thread-multi-2level) installed in /Library/Perl/5.10.0/darwin-thread-multi-2level/auto/DBI/
Configuring DBD::Oracle for perl 5.010000 on darwin (darwin-thread-multi-2level)
Remember to actually *READ* the README file! Especially if you have any problems.
Installing on a darwin, Ver#10.0
Using Oracle in /usr/oracle_instantClient64
Can't find sqlplus. Pity, it would have helped.
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 175.
I've triple checked that I've downloaded and installed the proper 64-bit drivers from Oracle. I also checked to make sure that I'm running 64-bit Perl.
如果我强迫这样的版本号:
perl MakeFile.pl -V 10.2.0.4
它完成,但运行“制造”当我收到错误消息:
Oracle.c:2267: error: ‘SQLT_BIN’ undeclared (first use in this function)
Oracle.c:2277: error: ‘SQLCS_NCHAR’ undeclared (first use in this function)
Oracle.c:2281: error: ‘SQLT_INT’ undeclared (first use in this function)
Oracle.c:2283: error: ‘OCI_FETCH_PRIOR’ undeclared (first use in this function)
Oracle.c:2287: error: ‘OCI_FETCH_NEXT’ undeclared (first use in this function)
lipo: can't open input file: /var/tmp//ccyIFLPN.out (No such file or directory)
make: *** [Oracle.o] Error 1
我知道这是因为需要从Makefile中去掉了“-arch竞价排名”的说法,但即使去除后删除所有的32位引用,我仍然看到了错误信息。
运行10.6.8 Snow Leopard中与Oracle驱动程序版本10.2.0.4
我发现,关键就在这问题是确保MakeFile.pl能找到的Oracle版本。
我遇到的问题是,Safari从Oracle.com下载zip文件,但解压缩它们并以某种方式破坏了库。
取而代之,我使用了不同的浏览器并将所有zip文件下载到一个目录中。然后,我跑到下面的tar命令:
tar -xf instantclient-basic-10.2.0.4.0-macosx-x64.zip
tar -xf instantclient-sdk-10.2.0.4.0-macosx-x64.zip
tar -xf instantclient-sqlplus-10.2.0.4.0-macosx-x64.zip
副本中的所有文件夹“instantclient_10_2”到$ ORACLE_HOME(预先设定的)
sudo cp -R instantclient_10_2/* $ORACLE_HOME
而且内容,我并不需要编辑Makefile由MakeFile.pl脚本生成以删除“-arch ppc”引用。
它看起来与XCode4的变化(删除PPC拱支持)的Perl安装没有更新的任何10.6.X更新也删除PPC二进制文件(可能是因为罗塞塔仍然存在)。
因此,配置文件保留“-arch ppc”,导致所有CPAN模块与C库编译失败,因为MakeMaker的输出Makefile包含-arch ppc。
为了解决这个问题一个可以编辑以下文件:
/System/Library/Perl/5.10.0/darwin-thread-multi-2level/Config_heavy.pl
在行1219,你会看到:
$archflags = exists($ENV{ARCHFLAGS}) ? $ENV{ARCHFLAGS} : '-arch x86_64 -arch i386 -arch ppc';
变化,为:
$archflags = exists($ENV{ARCHFLAGS}) ? $ENV{ARCHFLAGS} : '-arch x86_64 -arch i386';
一旦你这样做这个生成的Makefile将是正确的。
谢谢!一直在挖掘一个很好的解决方案。 – gaige 2013-03-05 17:04:05
您不应该在您的机器上重新创建与客户端库包装程序相同的目录结构。
不要做mkdir -p /b/227/rdbms/
使用MacOSX的库头管理工具:otool
和install_name_tool
举例来说,我有库头更新到我的部署架构:
otool -L /usr/oracle_instantclient/11.2.0.3.0-64-bit/libclntsh.dylib.11.1
/usr/oracle_instantclient/11.2.0.3.0-64-bit/libclntsh.dylib.11.1:
/ade/b/2649109290/oracle/rdbms/lib/libclntsh.dylib.11.1 (compatibility version 0.0.0, current version 0.0.0)
/ade/b/2649109290/oracle/ldap/lib/libnnz11.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
install_name_tool -id /usr/oracle_instantclient/11.2.0.3.0-64-bit/libclntsh.dylib.11.1 \
-change /ade/b/2649109290/oracle/ldap/lib/libnnz11.dylib /usr/oracle_instantclient/11.2.0.3.0-64-bit/libnnz11.dylib /usr/oracle_instantclient/11.2.0.3.0-64-bit/libclntsh.dylib.11.1
otool -L /usr/oracle_instantclient/11.2.0.3.0-64-bit/libclntsh.dylib.11.1
/usr/oracle_instantclient/11.2.0.3.0-64-bit/libclntsh.dylib.11.1:
/usr/oracle_instantclient/11.2.0.3.0-64-bit/libclntsh.dylib.11.1 (compatibility version 0.0.0, current version 0.0.0)
/usr/oracle_instantclient/11.2.0.3.0-64-bit/libnnz11.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
检查所有Oracle InstantClient库附带的文件并修复所有相关库的路径
otool -L adrci
otool -L genezi
otool -L libclntsh.dylib.11.1
otool -L libheteroxa11.dylib
otool -L libnnz11.dylib
otool -L libocci.dylib.11.1
otool -L libociei.dylib
otool -L libocijdbc11.dylib
otool -L libsqlplus.dylib
otool -L libsqlplusic.dylib
otool -L sqlplus
otool -L uidrvci
然后,您将动态库链接到它们应该是的位置。
而且你能避免使用export DYLD_LIBRARY_PATH
因为你知道如何设置你的系统
cd /usr/lib
ln -s ../oracle_instantclient/11.2.0.3.0-64-bit/libclntsh.dylib.11.1 .
ln -s ../oracle_instantclient/11.2.0.3.0-64-bit/libclntsh.dylib.11.1 libclntsh.dylib
ln -s ../oracle_instantclient/11.2.0.3.0-64-bit/libheteroxa11.dylib .
ln -s ../oracle_instantclient/11.2.0.3.0-64-bit/libnnz11.dylib .
ln -s ../oracle_instantclient/11.2.0.3.0-64-bit/libocci.dylib.11.1 .
ln -s ../oracle_instantclient/11.2.0.3.0-64-bit/libocci.dylib.11.1 libocci.dylib
ln -s ../oracle_instantclient/11.2.0.3.0-64-bit/libociei.dylib .
ln -s ../oracle_instantclient/11.2.0.3.0-64-bit/libocijdbc11.dylib .
ln -s ../oracle_instantclient/11.2.0.3.0-64-bit/libsqlplus.dylib .
ln -s ../oracle_instantclient/11.2.0.3.0-64-bit/libsqlplusic.dylib .
- 1. 如何在Mac OS X 10.6(Snow Leopard)上安装EasyGUI?
- 2. Python - 在Mac OSX中安装matplotlib Snow Leopard
- 3. 如何在Mac OSX Snow Leopard上安装Homebrew?
- 4. 如何在Snow Leopard上安装Qt 4.7.0?
- 5. 在OS X 10.6上安装Passenger-Apache2 Snow Leopard
- 6. 无法在OS X 10.6上安装mysql gem Snow Leopard服务器
- 7. Perl DBD :: Oracle模块安装
- 8. 在Snow Leopard中安装VPython?
- 9. 如何在Unix(Mac OSX)上安装perl模块DBD :: Sybase?
- 10. glib for mac os 10.6 snow leopard
- 11. 在Snow Leopard上安装psyco for python
- 12. 试图安装DBD :: mysql使用macports mysql和perl失败make test [Snow Leopard]
- 13. 在Mac OSX上安装PostgreSQL for Rails 3 Snow Leopard - 错误信息
- 14. 我可以在OSX 10.6.8(Snow Leopard)上安装Xcode 4.2吗?
- 15. Perl的DBI/Perl的DBD-Oracle安装
- 16. 如何在Snow Leopard中安装openVRML?
- 17. 如何在Mac OSX上安装Perl DateTime模块10.6
- 18. 在Snow Leopard上安装MySQL和MySQL gem
- 19. 在Snow Leopard上安装ColdFusion 8?
- 20. 在Snow Leopard上安装Ruby 1.9.2
- 21. 在Snow Leopard上安装Rails 3.1和Postgresql
- 22. 使用MacPorts在Snow Leopard上安装MySQL
- 23. 在Snow Leopard上安装Qt失败
- 24. ImageMagick MacPorts在Snow Leopard上安装失败
- 25. 在Snow Leopard上安装Boost库
- 26. 安装MySQL_python 1.2.2时出现GCC错误(Mac OS 10.6 Snow Leopard)
- 27. Snow Leopard安装的Mysql gem
- 28. 如何在Mac OS X 10.6(Snow Leopard)上使用D开始
- 29. 在Mac上安装MySQL-python-1.2.3c1的问题Snow Leopard
- 30. 在Mac OSX上使用xft支持编译perl-tk Snow Leopard
如果按照nickistat的配方和得到它的工作,你会介意在CPAN点组织对结果和任何更改您邮寄马丁制作。然后我将它添加到DBD :: Oracle中的README.macosx.txt文件中。了解你的确切的mac处理器和版本细节将是有用的。 – bohica 2011-05-11 13:42:25