No Programming, No Life

プログラミング関連の話題や雑記

OS Xを10.9(Mavericks)にしてから久々にHomebrewを起動したらエラーが出て起動しなかった話

OS Xを10.9(Mavericks)にしてから久しくHomebrewを使っていなかったのだが、久々に使おうと思い起動したところ、以下のようなエラーがでて起動できず…ぐぬぬ

$ brew version
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': /usr/local/Library/Homebrew/extend/pathname.rb:259: invalid multibyte escape: /^\037\213/ (SyntaxError)
invalid multibyte escape: /^\037\235/
invalid multibyte escape: /^\xFD7zXZ\x00/
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/Library/Homebrew/global.rb:1:in `<top (required)>'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/local/bin/brew:10:in `<main>'

色々調べてみたら
brew error: invalid multibyte escape : /^\037\235/ after updating to OSX Mavericks · Issue #23655 · Homebrew/homebrew · GitHub
が見つかりました。

どうもMavericksになった時にRubyのデフォルトバージョンが2.0にあがったのだが、Homebrewの方はまだRuby1.8系を使っているから、というのが原因らしい。
直接原因は
multibyte escape: /^\037\213/
このマルチバイト文字のエスケープがうまくいかなかったこと、なのかな?

さて、こちらの投稿を読んで行くと

Changed first line in /usr/local/bin/brew to:
#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

とのことだったので、/usr/local/bin/brewをエディタで開いて、最初の1行目、つまりシェバング行を

#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

に置き換えたところ解決しました。ふぃ。
Homebrewで使うRubyのバージョンを決め打ちで1.8系にしたわけですね。


バージョンアップしたりすると思わぬところで歯車が食い違って動かなくなることがよくありますよね。日頃からよく動かして腕を慣らしておかないといかんですね。