読者です 読者をやめる 読者になる 読者になる

ARCHIVESDRIVE HB

オイラはホームベーカリー!

rbenv + ruby-build 環境で今更 ruby 1.8.7 を用意する

諸事情によりこのバージョンとあと 10 年は付き合う可能性が出てきたので……。モンキーパッチ職人となる可能性すらある(しろめ)。 今回は MacOSX 10.11.3 ( El Capitan ) で rbenv と ruby-build 導入済みの環境で作業しますた。Linux 版は後日改めて書く予定です。

インスコする

成功したけど openssl 読み込めなくてだめなパターン

user-no-MacBookPro:work_dir USER$ brew update && brew upgrade ruby-build
user-no-MacBookPro:work_dir USER$ rbenv versions

...

  1.8.7-p249
  1.8.7-p302
  1.8.7-p334
  1.8.7-p352
  1.8.7-p357
  1.8.7-p358
  1.8.7-p370
  1.8.7-p371
  1.8.7-p374
  1.8.7-p375

...

user-no-MacBookPro:work_dir USER$ rbenv install 1.8.7-p375
Checking out http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8_7...
Installing ruby-1.8.7-p375...
Installed ruby-1.8.7-p375 to /Users/USER/.rbenv/versions/1.8.7-p375

Downloading rubygems-1.6.2.tgz...
-> https://dqw8nmjcqpjn7.cloudfront.net/cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7
Installing rubygems-1.6.2...
Installed rubygems-1.6.2 to /Users/USER/.rbenv/versions/1.8.7-p375

user-no-MacBookPro:work_dir USER$ rbenv versions
  system
* 1.8.7-p375 (set by /Users/USER/Workspace/test/.ruby-version)

入りもうした。動作確認しましょ。

user-no-MacBookPro:work_dir USER$ irb
irb(main):001:0> require 'openssl'
LoadError: no such file to load -- openssl
    from (irb):1:in `require'
    from (irb):1
irb(main):002:0> exit

オッヴェッ?! openssl 1 系がインストールされてる環境で使いたいから rbenv を選んだの!なんでだめなの!

小細工して openssl 使えるようにする

user-no-MacBookPro:work_dir USER$ rbenv uninstall 1.8.7-p375
user-no-MacBookPro:work_dir USER$ rbenv versions
*  system
user-no-MacBookPro:work_dir USER$ brew install openssl readline
user-no-MacBookPro:work_dir USER$ CONFIGURE_OPTS="--disable-install-rdoc --with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl`" rbenv install 1.8.7-p375
Checking out http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8_7...
Installing ruby-1.8.7-p375...
Installed ruby-1.8.7-p375 to /Users/USER/.rbenv/versions/1.8.7-p375

Downloading rubygems-1.6.2.tgz...
-> https://dqw8nmjcqpjn7.cloudfront.net/cb5261818b931b5ea2cb54bc1d583c47823543fcf9682f0d6298849091c1cea7
Installing rubygems-1.6.2...
Installed rubygems-1.6.2 to /Users/USER/.rbenv/versions/1.8.7-p375

user-no-MacBookPro:work_dir USER$ rbenv versions
  system
* 1.8.7-p375 (set by /Users/USER/Workspace/test/.ruby-version)

オプションつけて再インストールしました。んじゃ試してみましょ!

user-no-MacBookPro:work_dir USER$ irb
irb(main):001:0> require 'openssl'
=> true

やったああああ。

まとめ

Ruby 2.0 以降であれば rbenv が自動的に面倒みてくれると風のうわさで聞きましたが、それ以前のバージョンは CONFIGURE_OPTS を渡すことでしか対策できないようです。ちなみに、brew でインストールした openssl と readline の prefix ですが、環境によっては /usr/local だったり /usr/local/opt だったりと差があるようなので、やっぱ brew --prefix して確認するしかないすね。