プラットフォーム固有の問題
Intel Mac
Oracle は intel mac 用のバイナリを提供していません。 Oracle Instant Client 10.1.0.3 は ppc バイナリなので、intel CPU 用の ruby では動かないのです。 (日本のサイトには Mac OS X 用の instant client はないようです、 英語のサイトにあります。)
回避策としては以下の2つがあります。
- ruby を ppc としてコンパイルする。(Raimonds Simanovskisさんのblog を参照)
- ruby-odbcとサードパーティのODBCドライバ(Actual Technologies または OpenLink Software)を使用する。
Solaris
ruby 本体をコンパイルしたのと同じコンパイラが必要です。
ruby のパッケージは2種類あります。
前者は gcc でコンパイルされており、後者はSun Studioでコンパイルされています。 どちらのコンパイラも自由に使用できます。
Blastwave.orgのrubyを使っていて、Sun Studioをインストールしたくない場合は、rbconfig.rb を手で編集する方法もあります。(ここを参照)
Linux
ruby と同じビット幅のライブラリを使用してください。例えば、 x86_64 版の ruby には x86_64 の instant client, 32ビットの ruby には 32ビットの instant client が必要です。OSのビット数ではなく、ruby のビット幅にのみ依存します。 full client の場合、x86_64 版 ruby は 32 ビットの full client を使用できません。しかし、32 ビット ruby は 64 ビットの full client を使用可能です。32ビット版ライブラリが $ORACLE_HOME/lib32 にあるためです。
ruby の種類を確認するには以下のコマンドを実行してください。
file `which ruby`
注意: ` はバッククォートです。
FreeBSD
2つの方法があります。
- instantclient を linux emulator 上の ruby で動かす。
- oracle8-client port を使用。
oracle8-client を使用する場合は以下のようにします。
- oracle8-client をインストール
cd /usr/ports/databases/oracle8-client make make install
- 環境変数 ORACLE_HOME を設定
export ORACLE_HOME=/usr/local/oracle8-client
- ruby-oci8 のソースコードを展開して oraconf.rb を入れ替える。
tar xvfz ruby-oci8-1.0.0-rc3.tar.gz cd ruby-oci8-1.0.0-rc3/ext/oci8 mv oraconf.rb oraconf.rb.orig wget http://ruby-oci8.rubyforge.org/svn/branches/ruby-oci8-1.0/ext/oci8/oraconf.rb
この後の作業は Oracle Full Clientを見てください。
note: oracle8-client port のOracleのライブラリはスタティック リンクライブラリなので、LD_LIBRARY_PATH の設定は必要あり ません。
FreeBSD ではすべての機能は動かないようです。make check を実行すると失敗したり、無限ループに陥いるものがあります。 使えるかどうか試験して、使える機能だけを使用してください。
HP-UX
libpthread、libcl とリンクしてある ruby が必要です。
詳細はhttp://www.alfonsomartone.itb.it/xvpucf.htmlを見てください。
Windows
ディスクI/Oの負荷の高いマシンや、遅いディスクを使っているマシンでは、以下のエラーが起こることがあります。
Permission denied - conftest.exe
回避策として mkmf.rb を編集してください。
def try_run(src, opt="")
if try_link0(src, opt)
xsystem("./conftest")
else
nil
end
ensure
# add the following one line.
sleep 1 if /mswin32|cygwin|mingw32|bccwin32/ =~ RUBYPLATFORM
rm_f "conftest*"
end
Keyword(s):
References:[SideMenu] [インストール時の問題を報告]