Mac OS X をアップグレードしたあとに ruby とか入れ直した
仕事で使ってる 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 で文字消せない)、これも同じように再インストールしたら直りました。