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/に移転しました