このエントリーをはてなブックマークに追加
スポンサーリンク

2016年1月22日 ruby-postgres-0.7.1のインストール

cd 作業ディレクトリ
mkdir Ruby-modules
cd Ruby-modules

wget http://ftp.stu.edu.tw/pub/BSD/NetBSD/pkgsrc/distfiles/ruby/ruby-postgres-0.7.1.tar.gz
tar xzvf ruby-postgres-0.7.1.tar.gz
cd ruby-postgres-0.7.1
ruby extconf.rb --with-pgsql-dir=/usr/local/pgsql

と、ここでエラー。
extconf.rb:1:in `<main>': uninitialized constant VERSION (NameError)

1行目を見ると・・・
if VERSION < "1.3"
print "This library is for ruby-1.3 or higher.\n"
exit 1
end

だよね。VERSIONなんてどこにも定義してないのに、なぜ1行目にいきなり出てくるんだ??それともRubyの昔のバージョンならVERSIONっていう予約語が使えたのかなぁ・・・。

検索したところ、DBIのサポートはRuby1.8まで。2.3はサポートされてない。
ここを参考にしました。
http://qiita.com/weal/items/2c28f12a23c501db37f2

じゃあgemでインストールしてみるが、

gem install pg
/usr/bin/ruby: symbol lookup error: /usr/lib/ruby/2.3.0/x86_64-linux/openssl.so: undefined symbol: SSL_CTX_clear_options

どうも、このサーバーに入ってるopensslのバージョンが合わないようだな。要するに、PHPにしろapacheにしろPostgreSQLにしろ、そのOSができた頃に作られたバージョンを入れないと、ライブラリとバージョンの依存性の関係でエラーになってしまうわけで・・・。

たとえばRedHat7を使ってた頃はもっぱらPostgres6シリーズを使ってたし、RedHat9からはPostgres7に、PHP4、apache1.xxシリーズを使っていた。これが、RedHat9にPostgres8やPHP5シリーズを入れようとしても依存性の関係でうまくいかなかったりした。でも、Linuxではよくある話さ。

今使ってるサーバーはCentOS4だけど、さすがにもう古いよなぁ。なにせこのサーバー立てたの8年前だし。Rubyのバージョンを最新にするためだけにOSごと入れ替えるわけにもいかんし・・・。

仕方がないのでrubyのバージョンを下げる。CentOSのバージョンが上がれば最新版も使えたんでしょうけど、残念。

wget --no-check-certificate https://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7.tar.gz
tar xvzf ruby-1.8.7.tar.gz
cd ruby-1.8.7
./configure --prefix=/usr
make
make install

cd 作業ディレクトリ
mkdir Ruby-modules
cd Ruby-modules

wget http://ftp.stu.edu.tw/pub/BSD/NetBSD/pkgsrc/distfiles/ruby/ruby-postgres-0.7.1.tar.gz
tar xzvf ruby-postgres-0.7.1.tar.gz
cd ruby-postgres-0.7.1
ruby extconf.rb --with-pgsql-dir=/usr/local/pgsql
make
make install
cd ..

wget http://ftp.stu.edu.tw/pub/BSD/NetBSD/pkgsrc/distfiles/ruby/ruby-dbi-all-0.0.21.tar.gz
tar xzvf ruby-dbi-all-0.0.21.tar.gz
mv ruby-dbi-all ruby-dbi-all-0.0.21
cd ruby-dbi-all-0.0.21
ruby setup.rb config --with=dbi,dbd_pg
ruby setup.rb setup
ruby setup.rb install

今度はすんなり入った。やっぱ、今使ってるサーバーのバージョンと、Rubyのバージョン2は合わないようだ。Rubyのバージョン2を入れるためには、もっとCentOSのバージョンを上げねばなるまい。

というわけで、今回はここまで。

ここを参考にしました。
http://www.nslabs.jp/dbi-install.rhtml
http://bitarts.jp/tech/linux/ruby182_dbi.html


 △先頭へ  コメント(0)  トラックバック(0)  拍手(0)

スポンサーリンク