Fedora 12上でRuby 1.9.1のビルド

Fedora 12上でRuby 1.9.1-p376のビルドを試みたところ、コンパイルエラーが発生しました。Fedora 12では、OpenSSLのバージョンが従来の0.9.8系から1.0 (beta) に置き換わった影響で、そのままではRubyのビルドに失敗するようです。

makeのログから抜粋:

make[1]: ディレクトリ `/home/m-kawato/src/ruby-1.9.1-p376/ext/openssl' に入ります
...
ossl_pkcs7.c:575: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token

【参考1】 http://cohakim.wordpress.com/2009/11/25/fedora-12-%E3%81%A7-ruby-enterprise-edition-%E3%82%92%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E3%81%99%E3%82%8B/
【参考2】 http://redmine.ruby-lang.org/issues/show/2022

【参考2】中に、Ruby 1.9.1/1.8.7に適用可能な OpenSSL 1.0環境向けパッチが提供されている (投稿日: 2009年09月01日) ので、これを適用します。

該当箇所を ruby-openssl.patch のような名前で保存して、以下のようにパッチを適用します。

~/src/ruby-1.9.1-p376> patch -p0 < ruby-openssl.patch
patching file ext/openssl/ossl.c
patching file ext/openssl/ossl_pkcs7.c
patching file ext/openssl/ossl_ssl.c
Hunk #1 succeeded at 89 (offset -8 lines).
Hunk #2 succeeded at 100 (offset -8 lines).
Hunk #3 succeeded at 149 (offset -8 lines).
Hunk #4 succeeded at 592 (offset -77 lines).
Hunk #5 succeeded at 1220 (offset -205 lines).

ついでに、2009年09月29日投稿の1行パッチも適用しておきます (こちらは手動)。

2009年11月26日の投稿、

Fedora 12 uses openssl 1.0 Beta 3; So Fedora people can't build ruby now.

が若干気になりますが、とりあえずRuby 1.9.1のビルドには成功しました。
(hello worldとmake testに通っただけなので、opensslライブラリが正常に動作するかどうかは未確認)