Yosemiteで動かないHomebrewをgitコマンドで治す

  • 18
    いいね
  • 0
    コメント

偶然このエントリを読んだ、未だ Yosemite にしてないアナタへ

悪い事は言わないから今すぐ brew update しておきましょう。
もしかすると下の作業をしなきゃいけない羽目に遭うかも…。

状況解説

Yosemite にアップデートしたために brew コマンドが使えなくなることがあります。
原因は Homebrew の大元ファイルである /usr/local/Library/brew.rb にあります。拡張子から分かるように Ruby で書かれています。ただし、 shebang で使用する Ruby を

brew.rb-old
#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby

と決め打ちしていました。
Yosemite では Ruby 1.8 の添付が廃止されたため、このままの shebang では brew コマンドが実行出来ません。
これは Yosemite のプレビュー版で判明していた問題なので、今年(2014年)の6/4に修正されています。
Switch to "Current" Ruby framework symlink · 1bbcc4b · Homebrew/homebrew

brew.rb-diff
-#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
+#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby

つまり、それ以前に Homebrew をインストールしている(&その後 brew update していない)と 1.8 のままになっている、と思われます。
(わたしはしょっちゅう brew update していますし、 一度ミスって /usr/local を全部消してしまったりしたので Current になっていました。)

治し方

Homebrew の更新は git で行っているので、 git fetch でリモートを取得し、 /usr/local/Library/brew.rb をチェックアウトすれば良いですね。

$ cd /usr/local
$ git fetch origin master:refs/remotes/origin/master -n
$ git checkout origin/master -- Library/brew.rb

そのあとはいつも通り brew doctor して brew update しましょう。