2014-10-05 70 views
8

我想在RHEL6.1服務器上安裝Perl模塊DBD :: Oracle。雖然這樣做,我也跟着以下步驟:安裝DBD時出錯:: Oracle

  1. 以下RPM安裝:

    • 甲骨文instantclient12.1-基本-12.1.0.2.0-1.x86_64.rpm
    • 神諭-instantclient12.1-devel的-12.1.0.2.0-1.x86_64.rpm
    • 甲骨文instantclient12.1-SQLPLUS-12.1.0.2.0-1.x86_64.rpm
  2. 個導出環境變量

    export ORACLE_HOME=/usr/lib/oracle/12.1/client64

    export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib

  3. 安裝DBD ::甲骨文

    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 

安裝過程出了什麼問題?我遵循this指南。

回答

21

Oracle即時客戶端的安裝和設置後,使用正常的構建步驟沒有CPAN工具和-l選項傳遞到Makefile.PL

  1. 下載tar.gz包並解壓

  2. 打造IT

    perl Makefile.PL -l 
    make && make test 
    
  3. 安裝

    make install 
    
+0

我浪費了半天的時間試圖找到這個。謝謝,它解決了我的問題。雖然-l標誌實際上做了什麼? – Arran 2015-03-03 15:48:01

+0

也在這裏!在我搜索的任何地方,人們都被告誡讀取自述文件,但該文件對於InstantClient說得很少!我非常震驚,認爲它加入了-l。聖煙。謝謝! – Glenn 2016-03-20 00:19:05

+0

另一個細節:在我嘗試安裝叮叮聲東西失敗的嘗試中,我做了SOMETHING,導致創建了兩個軟鏈接:## sudo ln -s libclntsh.so.11.1 libclntsh.so ## sudo ln -s libocci.so.11.1 libocci.so ##是的,我證實創建這些鏈接是不夠的;神奇的是在上面添加'-l'。 – Glenn 2016-03-20 23:31:03

13

其實,如果你想使用RPM和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 

與那cpan -i DBD::Oracle返回沒有錯誤。

+0

您是否安裝了即時客戶端rpms或整個oracle數據庫?當我使用即時客戶端安裝時,我看不到在錯誤中提到的demo/demo.mk。 – partyd 2018-03-01 19:10:11

0

CPAN安裝程序唯一無法找到的是合適的* .mk文件。 Oracle必須使用CPAN安裝程序進行貓捉老鼠遊戲,因爲安裝程序正在多個位置搜索多個文件名。

我用命令

locate -r '\.mk$' 

發現演示。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安裝成功。

+0

您是做了完整的數據庫安裝還是僅僅是即時客戶端?安裝即時客戶端時無法找到此demo/demo.mk文件。 – partyd 2018-03-01 18:55:52