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

Mac OS X をアップグレードしたあとに ruby とか入れ直した

mac ruby homebrew

仕事で使ってる MacBoox Air の OS がまだ Mountain Lion だったので、ようやく Mavericks にアップグレードした(Yosemite が出てるのにいまさらですけど…)。そしたらいろいろ動かなくなったのでやったことを書いておく。

1. homebrew のシンボリックリンクが全部消えた

とりあえずググったら会社の同僚のブログが見つかったので、それを読んで、以下のことを行った。

Mountain Lion から Mavericks にアップデートしたら Homebrew の諸々の Link が消えた - ravelllの日記

brew list | xargs brew unlink
brew cleanup
brew list | xargs brew link

cleanup は古いバージョンのパッケージを削除するコマンド。複数バージョン入っていてうまくいかないことがあったので実行した。あとコンソールに表示されたとおりに何度か brew remove をした(詳細は忘れた)。

2. ruby でなんかエラーが出る

出社初日、さあ仕事するぞと思って、おもむろにとある Ruby スクリプトを実行したらこんなエラーが出た。

$ bin/とあるRubyスクリプト
/Users/usr0600268/.rbenv/versions/2.1.5/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': dlopen(/Users/usr0600268/.rbenv/versions/2.1.5/lib/ruby/2.1.0/x86_64-darwin12.0/digest/sha1.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib (LoadError)
Referenced from: /Users/usr0600268/.rbenv/versions/2.1.5/lib/ruby/2.1.0/x86_64-darwin12.0/digest/sha1.bundle
Reason: image not found - /Users/usr0600268/.rbenv/versions/2.1.5/lib/ruby/2.1.0/x86_64-darwin12.0/digest/sha1.bundle
from /Users/usr0600268/.rbenv/versions/2.1.5/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Users/usr0600268/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/bundler-1.7.7/lib/bundler/definition.rb:1:in `<top (required)>'
from /Users/usr0600268/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/bundler-1.7.7/lib/bundler.rb:154:in `definition'
from /Users/usr0600268/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/bundler-1.7.7/lib/bundler.rb:117:in `setup'
from /Users/usr0600268/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/bundler-1.7.7/lib/bundler/setup.rb:7:in `<top (required)>'
from /Users/usr0600268/.rbenv/versions/2.1.5/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:135:in `require'
from /Users/usr0600268/.rbenv/versions/2.1.5/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:135:in `rescue in require'
from /Users/usr0600268/.rbenv/versions/2.1.5/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:144:in `require'
from bin/とあるRubyスクリプト:4:in `<main>'

エラーメッセージを読むと、

Library not loaded: /usr/local/opt/openssl/lib/libcrypto.1.0.0.dylib (LoadError)

とのこと。ちょっとググったりしても解決方法がよくわからなかったので、ひとまず ruby を再インストールしてみることに。rbenv uninstall した後に以下を実行した。

(いま改めてエラーメッセージを見ると openssl のライブラリファイルがないと出てるので原因は ruby じゃなさそうだということに気がつく...)

$ rbenv install 2.1.5
Downloading ruby-2.1.5.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/4305cc6ceb094df55210d83548dcbeb5117d74eea25196a9b14fa268d354b100
Installing ruby-2.1.5...

BUILD FAILED (OS X 10.9.5 using ruby-build 20141225-1-g45b75ed)

Inspect or clean up the working tree at /var/folders/v_/2m54czdx5t77mrhb9w179mf40000gn/T/ruby-build.20150105114715.63341
Results logged to /var/folders/v_/2m54czdx5t77mrhb9w179mf40000gn/T/ruby-build.20150105114715.63341.log

Last 10 log lines:
installing rdoc: /Users/usr0600268/.rbenv/versions/2.1.5/share/ri/2.1.0/system
installing capi-docs: /Users/usr0600268/.rbenv/versions/2.1.5/share/doc/ruby
The Ruby openssl extension was not compiled. Missing the OpenSSL lib?
Configure options used:
--prefix=/Users/usr0600268/.rbenv/versions/2.1.5
--with-openssl-dir=/usr/local/Cellar/openssl/1.0.1j_1
--with-readline-dir=/usr/local/Cellar/readline/6.3.8
CFLAGS= -O3 -Wno-error=shorten-64-to-32
LDFLAGS=-L/Users/usr0600268/.rbenv/versions/2.1.5/lib
CPPFLAGS=-I/Users/usr0600268/.rbenv/versions/2.1.5/include

失敗した...

The Ruby openssl extension was not compiled. Missing the OpenSSL lib?

と出てるので、今度は openssl を再インストールしてみることに。

$ brew uninstall —force openssl
$ brew install openssl

これでもう一度 rbenv install 2.1.5 して無事解決したのでした。

ちゃんちゃん。

おまけ

irb を起動したときに readline がうまく動いていない様子だったので(Ctrl + H で文字消せない)、これも同じように再インストールしたら直りました。