我試圖從運行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