鳥小屋.txt

主に自作ゲームをつくったりしているよ。制作に関することやそうじゃないことのごった煮ブログ

sqlite3-rubyをインストールしたい

カテゴリ設定が難しいー。webにするかRubyにするか悩んだけど、とりあえずwebで。
制作とは関係ないんですが大学の研究室で作業しててつまづいたのでメモ。

研究室で研究用サーバとしてCentOS5.4な子を設置しています。で、Ruたんが勝手にRuby放り込んでるわけです。いいじゃん?研究で使うんだし。
それで、gemsでsqlite3-rubyをインストールしようとしたら、

gem install sqlite3-ruby
Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3-ruby:
        ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb
checking for #include <sqlite3.h>
... yes
checking for sqlite3_libversion_number() in -lsqlite3... yes
checking for rb_proc_arity()... no
checking for sqlite3_column_database_name()... no
checking for sqlite3_enable_load_extension()... no
checking for sqlite3_load_extension()... no
creating Makefile

make
gcc -I. -I. -I/usr/lib/ruby/1.8/i686-linux -I. -I/usr/local/include -I/opt/local/include -I/usr/include  -D_FILE_OFFSET_BITS=64  -fPIC -g -O2  -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline  -c sqlite3.c
sqlite3.c: In function ‘Init_sqlite3_native’:
sqlite3.c:27: 警告: implicit declaration of function ‘sqlite3_initialize’
gcc -I. -I. -I/usr/lib/ruby/1.8/i686-linux -I. -I/usr/local/include -I/opt/local/include -I/usr/include  -D_FILE_OFFSET_BITS=64  -fPIC -g -O2  -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline  -c exception.c
gcc -I. -I. -I/usr/lib/ruby/1.8/i686-linux -I. -I/usr/local/include -I/opt/local/include -I/usr/include  -D_FILE_OFFSET_BITS=64  -fPIC -g -O2  -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline  -c database.c
database.c: In function ‘deallocate’:
database.c:17: 警告: implicit declaration of function ‘sqlite3_next_stmt’
database.c:17: 警告: assignment makes pointer from integer without a cast
database.c: In function ‘initialize’:
database.c:76: 警告: implicit declaration of function ‘sqlite3_open_v2’
database.c:79: error: ‘SQLITE_OPEN_READWRITE’ undeclared (first use in this function)
database.c:79: error: (Each undeclared identifier is reported only once
database.c:79: error: for each function it appears in.)
database.c:79: error: ‘SQLITE_OPEN_CREATE’ undeclared (first use in this function)
database.c: In function ‘set_sqlite3_func_result’:
database.c:277: error: ‘sqlite3_int64’ undeclared (first use in this function)
database.c: In function ‘rb_sqlite3_func’:
database.c:311: 警告: passing argument 1 of ‘ruby_xcalloc’ as signed due to prototype
database.c: In function ‘rb_sqlite3_step’:
database.c:378: 警告: passing argument 1 of ‘ruby_xcalloc’ as signed due to prototype
database.c: In function ‘load_extension’:
database.c:589: 警告: implicit declaration of function ‘sqlite3_load_extension’
database.c: In function ‘enable_load_extension’:
database.c:610: 警告: implicit declaration of function ‘sqlite3_enable_load_extension’
make: *** [database.o] エラー 1


Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.3.0 for inspection.
Results logged to /usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.3.0/ext/sqlite3/gem_make.out

こんなこと言われてインストールできないわけです。
Google先生に聞いたりしていろいろやってたんですが、うまく行かない……前にインストールしたときはうまくできたのになぁ……むーん……

というわけで前にやったときはうまく行った=古いバージョンならいけるんじゃないでしょうかということで。
最新版が1.3.0で一個古いやつは1.2.5っぽいのでそっちを入れてみる。

gem install sqlite3-ruby --version=1.2.5

これでいったら普通にインストール成功。うーん、なんでだろ?
とりあえず動けばいいので今回はこれでよしとする。また今度調べてみよう・x・