2017年にruby1.8.6をビルドする

ruby 1.8.6を使ってみようと思い、mac sierraでビルドしてみようとしましたがだいぶハマりました。

まずは公式のgccを使わないといけないと怒られる。指示の通り入れようとするともうそんなのないと言われる。こちらのブログを参考に無理やり入れてみようとしましたがだめでした。

Sierraでruby-buildで1.8.7をビルドする - 福島餃子Ruby親方

ここで、macをそのまま利用することを諦め、docker越しにインストールすることを試みます。検索すると各種Rubyのバージョン用のDockerfileをを取り揃えたリポジトリがありました。

abevoelker/docker-ruby: Dockerfiles for lots of MRI Ruby and JRuby interpreters

これを利用して1.8.6のイメージを作成しようとしましたがエラー…。どうやら依存しているopensslのバージョンが問題な模様。最終的にこちらのブログを参考にして、古いopensslを入れてbuildすることに成功しました。

Ubuntu 16.04 に Ruby 1.8.5 をインストールする - Qiita

最終的な成果はこちら。

あんまりいないと思うけど、必要な方がいたらどうぞご利用ください

追記

現状Rubyは動くのですが、gemでgem install rails -v 2.0.0などとgemをインストールしようとするとsegfaultになって死にます><

更に追記

segfaultは次の記事を参考にRubyのビルドを修正したら解消しました。

rbenv、rvmのruby 1.8.7, 1.8.6で timeout.rb: [BUG] Segmentation faultというエラーの対応|DIGITAL SQUADブログ

しかし依然gem install rails -v 2.0.5などとするとエラーになります(buffer overflow)。どうやら Ruby 1.8.6では最近のgemはインストールできない模様です。Rails の 2.0.5 は rake の 0.7.2 以上に依存しており、そのままだと最新の rake 12.0.0 をインストールしようとしてエラーになります。先に gem install rake -v 0.7.2 としておき次に gem install rails -v 2.0.5 とするとうまくインストールできました。

はー。疲れた :astonished:

さらにさらに追記

例えばRails2.0.5を入れて動かそうとすると、sqlite3がないと言われます。次のようにしてビルドに必要なライブラリを入れてからsqlite3 1.2.4をいれたところうまく動きました

apt-get update; apt-get install libsqlite3-dev
gem i sqlite3-ruby -v 1.2.4