RubyからPostgreSQL8.3系を使う[解決編]
先日PostgreSQL8.3.1を使おうとしてうまく動作しなかったので、資料を調べていたところ相性があることがわかったのでやり直してみる。
あと、こっちの日記にPostgreSQLのインストール方法を転記してなかったので、それも併せて転記。
まず、VMWare上にUbuntu8.0.4Serverを用意しなおしてみたので、そこに環境を構築(jp.ubuntuがよくタイムアウトになるのでいまちょっと面倒ね)
ソース解凍
#tar jxvf postgresql-8.3.1.tar.bz2 -C ../ #cd ../postgresql-8.3.1
コンパイルに必要な環境群をインストール。PostgreSQL8.3からXML形式のデータカラムに対応しているそうなので、その辺のコンパイルも通るようにしておく。
#apt-get install gcc #apt-get install zlibc zlib1g-dev #apt-get install libreadline5-dev #apt-get install xml2 #apt-get install libxml2-dev #apt-get install libxml-dev #apt-get install make
#./configure --prefix=/usr/local/pgsql83 --with-libxml #make #make install このあたりは標準手順書のまま実行してみる #adduser postgre83 #mkdir /usr/local/pgsql83/data #chown postgres83 /usr/local/pgsql83/data/ #su - postgres83 $/usr/local/pgsql83/bin/initdb -D /usr/local/pgsql83/data $/usr/local/pgsql83/bin/pgctl start -D /usr/local/pgsql83/data
実際はサイレンスモードにしないとメッセージがごちゃごちゃでるが、とりあえずこれで動作はOK。
つづいてRuby側。SSLがらみのライブラリを入れてなかったので入れる。
#apt-get install libssl-dev
あとはこっちは標準パスでインストールしてみる
#tar jcvf ruby-1.8.6-p114.tar.bz2 #cd ../ruby-1.8.6-p114 #./configure --enable-shared #make #make install
これで準備OK。
キーとなるRubyとPostgreSQL8.3を結ぶドライバーの相性だけれど、以下の記事によると、こういう組み合わせになるらしい。
http://archives.free.net.ph/message/20071207.185200.010eb917.ja.html
- ruby-postgres-0.7.1.tar.gz コンパイル通る
- ruby-postgres-20051221.tar.gz コンパイル通らない
- ruby-postgres-20060405.tar.gz コンパイル通らない
- ruby-postgres-20060406.tar.gz コンパイル通らない
この前は2005と2006シリーズでやっていたのでこの辺にはまってつながらなかったらしい。今回は、古い0.7.1を取ってきてテストしてみる。
確認すると以下の組み合わせとなる
- PostgreSQL8.3.1
- Ruby1.8.6 P114
- ruby-postgres0.7.1
ruby-postgre0.7.1を解凍して、実行してみる
ruby extconf.rb --with-pgsql-include-dir=/usr/local/pgsql83/include --with-pgsql-lib-dir=/usr/local/pgsql83/lib make make install
無事に通った。さっそくirbでテスト、とおもったら、irbでエラーが出た
irb(main):001:0> require "postgres" LoadError: libpq.so.5: cannot open shared object file: No such file or directory - /usr/local/lib/ruby/site_ruby/1.8/i686-linux/postgres.so from /usr/local/lib/ruby/site_ruby/1.8/i686-linux/postgres.so
これはldconfigができていないせいなので、/usr/local/pgsql83/libを設定に追加すれば解決。
connectもできるようなのでとりあえず動く状態になった(安心)。
0.7.9というバージョンは未確認だがこれで取り合えず使えるところまではいける感じ。