Tech Racho エンジニアの「?」を「!」に。
  • インフラ
  • 開発

Debian 7 wheezy環境でrbenvでのRubyビルドに失敗する時の対処方法

morimorihogeです。中将落ちしました。オリョクルくらいしかしてないので仕方ないですね。

たまたま触ることになったDebian環境にいつも通りRails環境を構築していたらハマったのでメモです。今回は短いです。というかruby-buildの公式Wikiに書いてあることなので、ドキュメントをちゃんと読んで作業をする人には無縁なエントリです。

つまり読まずにやってハマった :p

参考: https://github.com/sstephenson/ruby-build/wiki

表示されるエラー

Debian 7 wheezyで普通にrbenv/ruby-buildをインストールし、rbenv install 2.1.0を実行すると、以下の様なエラーが出ます。

Installing ruby-2.1.0...


BUILD FAILED

Inspect or clean up the working tree at /tmp/ruby-build.20140605183846.10260
Results logged to /tmp/ruby-build.20140605183846.10260.log

Last 10 log lines:
make[2]: *** [ossl_ssl.o] Error 1
make[2]: Leaving directory `/tmp/ruby-build.20140605183846.10260/ruby-2.1.0/ext/openssl'
make[1]: *** [ext/openssl/all] Error 2
make[1]: *** Waiting for unfinished jobs....
checking ../.././parse.y and ../.././ext/ripper/eventids2.c
installing default ripper libraries
linking shared-object ripper.so
make[2]: Leaving directory `/tmp/ruby-build.20140605183846.10260/ruby-2.1.0/ext/ripper'
make[1]: Leaving directory `/tmp/ruby-build.20140605183846.10260/ruby-2.1.0'
make: *** [build-ext] Error 2

openssl周りのエラーが出ているのですが、さらに/tmpに残ったログを見ると、

ossl_ssl.c: In function ‘Init_ossl_ssl’:
ossl_ssl.c:2232:5: error: ‘SSL_OP_MSIE_SSLV2_RSA_PADDING’ undeclared (first use in this function)

の様に、opensslやlibssl-devパッケージが入っているのに定数未定義っぽいエラーが吐き出されています。

対策

ruby-build公式Wikiにも書いてあるとおり、patchutilsをインストールした上で、

$ curl -fsSL https://github.com/ruby/ruby/commit/1e7a929c1d44d7a368fbe379211183ac6c972920.patch | \
 filterdiff --strip=1 -i a/ext/openssl/ossl_ssl.c | rbenv install -p 2.1.0

とすれば、パッチを当てた上でRubyをインストールすることができます。


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。