さて、私は CGI モジュール、DBI モジュール、および DBD::Oracle ドライバーの組み合わせを、CPANM を使用して、Oracle11g データベースを備えた 64 ビット Solaris 11 マシンにインストールしようとしていました。
Perlbrew を使用してその最新バージョンの Perl をインストールし、CPANM を更新してから、次のことを行いました...
cpanm -v -f -i CGI
cpanm -v -f -i DBI
これらのモジュールは両方とも正常にインストールされました。DBI を正常にインストールしようとすると、小さなテスト エラー (t/zvxnp_85gofer.t) が発生しましたが、強制インストールは機能しているように見えました。
それで、必要な最後の部分をインストールしようとしました:
cpanm -v -f -i DBD::Oracle
そして、これはインストールの終わりに向かって出てきたエラーでした...
Running Mkbootstrap for DBD::Oracle ()
chmod 644 Oracle.bs
rm -f blib/arch/auto/DBD/Oracle/Oracle.so
LD_RUN_PATH="/opt/oracle/rdbms/lib" gcc -G -L/usr/gnu/lib -fstack-protector Oracle.o dbdimp.o oci8.o -o blib/arch/auto/DBD/Oracle/Oracle.so \
-L/opt/oracle/rdbms/lib/ -lclntsh -lkstat -lnsl -lsocket -lresolv -lgen -ldl -lsched -lrt -R/opt/oracle/rdbms/lib -laio -lposix4 -lkstat -lm -lpthread \
ld: fatal: file /opt/oracle/rdbms/lib//libclntsh.so: wrong ELF class: ELFCLASS64
ld: fatal: file processing errors. No output written to blib/arch/auto/DBD/Oracle/Oracle.so
collect2: ld returned 1 exit status
*** Error code 1
make: Fatal error: Command failed for target `blib/arch/auto/DBD/Oracle/Oracle.so'
FAIL
! Installing DBD::Oracle failed. See /home/oracle/.cpanm/build.log for details.
wrong ELF class: ELFCLASS64
存在する64ビットバイナリ間の不一致と関係があり、このドライバーをインストールするには32ビットバイナリが必要であると推測していますか? 一部の調査では、インストールを続行するには lib32 ディレクトリを見つける必要があることが示されていますが、見つからないようです。
やった:
echo $ORACLE_HOME
---> /opt/oracle/rdbms
ls $ORACLE_HOME
次のディレクトリが返されました...
apex emcli mgw rdbms
assistants has network relnotes
bin hs nls root.sh
ccr ide oc4j scheduler
cdata install odbc slax
cfgtoollogs install.platform olap sqldeveloper
clone instantclient ons sqlj
config inventory OPatch sqlplus
crs j2ee opmn srvm
csmig javavm oracore sysman
css jdbc oraInst.loc timingframework
ctx jdev ord ucp
cv jdk oui uix
dbs jlib owb utl
dc_ocm ldap owm wwg
deinstall lib64 perl xdk
demo log plsql
diagnostics md precomp
dv mesg racg
したがって、lib64 は表示されますが、lib または lib32 は表示されません。以前にこの問題を抱えていた人、解決策を見つけた人、またはここから続行する方法を知っている人はいますか?