簡體   English   中英

Perl DBD::Oracle 模塊安裝

[英]Perl DBD::Oracle Module installation

有人可以指導我如何安裝 Perl DBD::Oracle模塊嗎?

這是我到目前為止所做的:

  • 平台:RHEL 5.8 64 位
  • 安裝的 Perl DBI 包
  • 已安裝適用於 Linux 64 位的 Oracle Instant 客戶端(即時客戶端的基礎 + sdk + sqlplus 組件)
  • 設置了正確的$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 XYZ" 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

  • 如果缺少 ExtUtils-MakeMaker 模塊,則sudo yum install perl-ExtUtils-MakeMakersudo yum install perl-ExtUtils-MakeMaker
  • 安裝 Perl DBI 模塊 ( $ yum install perl-DBI )
  • 為 Oracle 即時客戶端手動安裝以下三個 RPM(來自Instant Client Downloads for Linux x86-64 。示例適用於 v11.2.0.3.0-1:將以下命令調整為實際版本。)

     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 文件名。 sudo yum -y install oracle-instantclient*rpm這樣的東西應該做)

  • 設置以下變量:

     export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib export 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 sudo make install

如果您收到有關缺少 gcc 的投訴,您可以(暫時)安裝它然后將其刪除。

完畢 !!!

我遇到的問題是由於錯誤的LD_LIBRARY_PATH 我已將其設置為/usr/lib/oracle/11.2/client64而正確的值是/usr/lib/oracle/11.2/client64/lib

當然,這對於像我這樣的新手來說是一次很好的學習。

您還可以閱讀我的文章如何安裝 DBD::Oracle ,其中包含安裝 DBD::Oracle CPAN 模塊所需的所有步驟,這不是一個簡單的安裝。 目的是減少頭痛並將其變成可重復的過程。

這是我使用 yum 包和 CPAN 在 CentOS 7.2 上所做的。 這假設您使用的是 Oracle 12.1 版,但我想大多數版本都會以這種方式工作。

安裝 Oracle 即時客戶端

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

slayedbylucifer 答案的一點補充。 我遇到了與問題中提到的相同的問題。 我已經完成了 slayedbylucifer 描述的所有步驟。 但我仍然遇到了這里提到的問題:

/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

所以我創建了以下符號鏈接:

ln -s /opt/oracle/app/oracle/product/<YOUR_ORACLE_VERSION>/client_1/lib/libclntsh.so $ORACLE_HOME/libclntsh.so*

在那一步之后,上面的錯誤(找不到 -lclntsh)被修復了。 make 命令的執行沒有任何錯誤。

我仍然遇到的唯一問題是我不明白為什么這個符號鏈接是必要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM