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

コンパイルオプションにXMLを入れた状態にしてインストール

 #./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

この前は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というバージョンは未確認だがこれで取り合えず使えるところまではいける感じ。