RubyからPostgreSQLを利用するためのライブラリ pg のアップデート

[PostgreSQL][CentOS][MacOSX]RubyからPostgreSQLを利用するためのライブラリ pg のアップデートでエラーが出た場合の対処方法

久しぶりに書きます。

RubyからPostgreSQLを使うにはruby-pgライブラリが必要です。

ruby-pgのインストールはgemで一発です。

 gem install pg

Windowsやpg-0.8.0では問題なかったのですが MacCentOSでのpg-0.9.0へのアップデートでは、エラーになることがあります。

Mac Leopardの場合】

Updating pg
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
checking for pg_config... no
  :
Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/pg-0.9.0 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/pg-0.9.0/ext/gem_make.out
Nothing to update

これの対処
PATHにpg_configへのパスを追加します。

$ export PATH=/opt/local/lib/postgresql84/bin:$PATH 
MacBookPro:~ ofukui$ sudo gem update
Updating installed gems
Updating pg
Building native extensions.  This could take a while...
Successfully installed pg-0.9.0
Gems updated: pg
Installing ri documentation for pg-0.9.0...
Installing RDoc documentation for pg-0.9.0...

CentOSの場合】

Updating pg
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb
checking for pg_config... no
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
extconf.rb failed ***
: Gem files will remain installed in /usr/lib/ruby/gems/1.8/gems/pg-0.9.0 for inspection. Results logged to /usr/lib/ruby/gems/1.8/gems/pg-0.9.0/ext/gem_make.out Nothing to update
さしあたり pg-0.8 が動作しているので放置していたのですが、遂に解決しました。
$ sudo gem install pg -- --with-pg-config=/usr/local/pgsql/bin/pg_config
Building native extensions.  This could take a while...
Successfully installed pg-0.9.0
1 gem installed
Installing ri documentation for pg-0.9.0...
Installing RDoc documentation for pg-0.9.0...
ポイントは
 -- --with-pg-config=/usr/local/pgsql/bin/pg_config
postgresqlのプログラムであるpg_configのパスをgem installの際に付与することです。

PostgreSQL Conference2009

永らくこちらはご無沙汰してました。久しぶりに書きます。

PostgreSQL Conference2009 で発表してきました。

会場は、大門の AP浜松町というところで、増上寺と東京タワーが近いです。


PostgreSQLコミュティの集まりには久しぶりに参加しました。菅さんが大阪から来てらして、話がはずみました。

発表は最初プロジェクタに繋がらなくて、リブートでやっと繋がったのですが、かなり時間をロスして残念でした。
刻言道場「まいトレ」を公表するのは、最初の機会となったので、これをきっかけにどんどん発信したいところです。

Ramaze/Haml での iPhoneサイト構築という切り口はまだめずらしいでしょうから、興味ある人に関心をもって頂けるとうれしいです。

発表のスライドはここ(IEではエラーになってしまう(;_;)

17:15からはレセプションがあり懐かしい面々や、新しく出会ったかたとの楽しい時間でした。
2次会は、近所の中華料理店。SRA..な方々やPostgreSQLな方々とお話できて何よりでした。

■[Git]Macでインストールがうまくゆかない

昨年Gitのインストールはできたのに今、別のMacBookPro でエラーになってしまいハマり中 (;_;)

$ sudo port install git-core
Password:
      • > Verifying checksum(s) for p5-error
Error: Checksum (md5) mismatch for Error-0.17015.tar.gz Error: Checksum (sha1) mismatch for Error-0.17015.tar.gz Error: Target org.macports.checksum returned: Unable to verify file checksums Error: The following dependencies failed to build: p5-error rsync popt Error: Status 1 encountered during processing.

gem 1.3.1 への update に失敗

まだじたばた中なのですがメモ。
Windowsではすんなりupdate完了したのですが..

macbookpro:~ ofukui$ sudo gem update --system
Updating RubyGems
Updating rubygems-update
Successfully installed rubygems-update-1.3.1
ERROR:  While executing gem ... (NameError)
    undefined local variable or method `remote_gemspecs' for #
macbookpro:~ ofukui$ gem -v
1.2.0

Foodyn CMS開発日誌 Rails 2.2にアップグレード
http://www.matsubarafamily.com/lab/item_457.html

にて解説されているところのgem install rubygems-update でもまだダメでした。

macbookpro:~ ofukui$ sudo gem install rubygems-update
Password:
Successfully installed rubygems-update-1.3.1
1 gem installed
macbookpro:~ ofukui$ gem -v
1.2.0
macbookpro:~ ofukui$ sudo gem update --system
Password:
Updating RubyGems
Nothing to update

う〜む 「仕方なくRubyForgeからrubygemsをダウンロードしてインストール」する
のが対策っぽそう。

RubyForge rubygems
http://rubyforge.org/frs/?group_id=126
よりrubygems-1.3.1.tgz をダウンロードしインストール

macbookpro:Desktop ofukui$ mv rubygems-1.3.1.tgz /usr/local/src
macbookpro:Desktop ofukui$ cd /usr/local/src
macbookpro:src ofukui$ tar xzvf rubygems-1.3.1.tgz 
macbookpro:src ofukui$ cd rubygems-1.3.1
macbookpro:rubygems-1.3.1 ofukui$ sudo ruby setup.rb
 :
                                                                                                                                                          • -
RubyGems installed the following executables: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/gem If `gem` was installed by a previous RubyGems installation, you may need to remove it by hand. macbookpro:rubygems-1.3.1 ofukui$ gem -v 1.3.1

一件落着。

ruby-enterprise-1.8.6-20080624.tar.gz

最近CentOS5.2に Rails環境を構築していますが、「はまりのち抜けた」ので、報告。

6/20にRuby脆弱性対策版がリリースされている(ruby-1.8.5-p231.tar.gz,ruby-1.8.6-p230.tar.gz,ruby-1.8.7-p22.tar.gz)ので、今から構築するにはこれを使わない手はないと着手。

Ruby1.8.7は使ったことがなかったのでこの機会につかってみようとまず試してみました。

しかしながら

 :
undefined method `normalize' for #
 :

エラーの嵐に遭遇することに。

1.8.7では「Enumeratorは組み込みになり、eachなどのイテレータメソッドはブロックをつけないとEnumerable::Enumeratorを返すようになった。」の影響に直面。ここでRuby1.8.7は、あきらめ。

次に Ruby-1.8.6-p230をインストール。ここでRails1.2.3を動作させると「セグメンテーション違反です」のはまり道へ。

不安定な挙動で「アボートしました」も出て訳わからん状態に。

 :
 glibc detected *** ruby: munmap_chunk(): invalid pointer: 0x0a9527c8 ***
 :

調べてみるとruby-listにて「$SAFEの今後」問題の議論の真っ最中で、根本的な対策には壁を乗り越える必要があり、patchは提案されているものの具体的な解決版はすぐには出ていない状況が判明。

結局
Ruby Enterprise Editionからruby-enterprise-1.8.6-20080624.tar.gzをgetしてインストールして一件落着。

次の記事のおかげで辿り着きました。ありがとうございました。
Ruby1.8.6-p230 + Rails2.0.x で Segmentation faultしちゃう件についてのメモ - Ruby学習メモ - Rubyist

Rubyの脆弱性について - kなんとかの日記

http://blog.phusion.nl/2008/06/23/ruby-186-p230187-broke-your-app-ruby-enterprise-edition-to-the-rescue/

Ruby 1.8.7で使えるようになったRuby 1.9のメソッドたち - http://rubikitch.com/に移転しました