23

DBD::OraclePerlモジュールのインストール方法を教えてもらえますか?

これが私がこれまでに行ったことです:

  • プラットフォーム: RHEL 5.8 64 ビット
  • インストールされた Perl DBI パッケージ
  • Linux 64 ビット用のインストールされた Oracle Instant Client (basi + sdk + Instant Client 用の 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 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::Oracle1.44です

Oracle インスタント クライアントを正常にインストールできた場合は、何が不足しているのか教えていただけますか?

DBD::OracleOracle Instant Client を使用せずにインストールすることはできますか?

4

4 に答える 4

46
  • ExtUtils-MakeMaker モジュールが見つからない場合はインストールします ( sudo yum install perl-ExtUtils-MakeMaker)
  • Perl DBI モジュールをインストールします ( $ yum install perl-DBI)
  • 以下の 3 つの RPM を Oracle インスタント クライアント用に手動でインストールします ( 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

  • DBD::OracleCPANからダウンロード

  • モジュールを untar し、指定された順序で以下のコマンドを実行します。

    perl Makefile.PL
    make
    sudo make install
    

gcc が見つからないという苦情が寄せられた場合は、(一時的に) インストールしてから削除することができます。

終わり !!!

私が直面した問題は、間違ったLD_LIBRARY_PATH. に設定しました/usr/lib/oracle/11.2/client64が、正しい値は/usr/lib/oracle/11.2/client64/libです。

確かに、これは私のような初心者にとって素晴らしい学習でした。

于 2012-07-10T06:54:18.047 に答える
0

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 コマンドの実行はエラーなしでした。

私がまだ持っている唯一の問題は、なぜこのシンボリックリンクが必要なのか理解できないということです.

于 2015-09-28T09:11:06.773 に答える