Posted at

Yosemite(OS X 10.10)においてHomebrewが使えない問題を解決する

More than 3 years have passed since last update.

会社が休みだったので、他のスタッフに人柱になってもらうわけにもいかず、かといって好奇心を抑えられず、Yosemiteにアップグレードしました。

なんかhomebrewつかっているとアップグレードの時間が遅くなると言われていましたが、おおよそ2時間弱程度でアップグレードできました。アップグレードしたはよいものの、brewコマンドを打つと、

/usr/local/bin/brew: /usr/local/Library/brew.rb: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory

/usr/local/bin/brew: line 23: /usr/local/Library/brew.rb: Undefined error: 0

以上のメッセージをひたすら返すようになってしまいました。

原因としては、References内の記事で挙げられているように、YosemiteのRubyが、2.0デフォルトで、1.8.7がなくなっているために生じているようです。(健全な進化ですね。)よって、当該箇所を書き換えてしまおう、というのが解決策の主流のようです。

私の場合、デフォルトのRubyが

$which ruby

/Users/yuichi/.rvm/rubies/ruby-2.1.2/bin/ruby

なので、/usr/local/Library/brew.rbのshibangを、



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

+ #!/Users/yuichi/.rvm/rubies/ruby-2.1.2/bin/ruby -W0



に修正しました。ここで、$brew updateをやってもgitのエラーになるので、修正分をコミットします。

local git:(master) ✗ git commit -a -m 'use my default ruby'

[master 3f11181] use my default ruby
1 file changed, 1 insertion(+), 1 deletion(-)

ここでpullしてくると、当然ながらconflictします。そこは、また当該箇所を修正して、再びpullします。

git add .

local git:(master) ✗ git commit
[master 35c84e3] Merge branch 'master' of https://github.com/Homebrew/homebrew
local git:(master) grew update
zsh: command not found: grew
local git:(master) brew update
Updated Homebrew from 35c84e3c to 35c84e3c.
... 以下略

これで、使えるようになりました!

あまりスマートな方法でもない気もするので、待てる人は公式な解決策がでるまでYosemiteへのアップグレードを待ったほうがよいかもしれません。

取り急ぎ以上です。


References