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

ポジティブ心理学研究所

幸福度(EQ)アップの研究所です。ポジティブ心理学に出会う前の古い記事はネガティブなので注意。

homebrewユーザーがYosemiteにアプグレしたらbrewコマンドが使えなくなった問題解決法

どうも、Yosemiteにアップグレードしました。どうも僕です。

homebrewを使用しているユーザーがYosemiteにアップデートすると、/usr/localを移動しないととても時間がかかるかも、とかどうとか言われてたのは事前に発見していました。

でも「時間がかかるだけで、それ以外には問題ないよ」ということも添えられていたので、じゃあいいかとそのままアップグレードしました。

結果としては

時間かからなかったけど、homebrewが使えなくなった

※この記事には追記が2つあります。必ず最後まで目を通してから自分で最適だと思う方法を試してください。

エラー詳細

owner@owner-mac:~$ brew install nkf
/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 21: /usr/local/Library/brew.rb: Undefined error: 0

nkfをインストールしようとbrewコマンドを打ったら上のようなエラーが出ました。

よくわかないのでぐぐったところ解決策を見つけました。

解決方法

viでbrew.rbの1行目を編輯します。

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

---が古いほう、+++が新しいほうです。
つまり1.8の部分をCurrentにします。

そうしたら無事brewが再び使えるようになりました。

移動しなくても、インストールに時間かかるだけだから問題ないよ、とか言ってた記事。

嘘つき!

参考

Fixing Homebrew for OS X 10.10 Yosemite - Hans van Gent a.k.a. @jcvangent

その他ぶち当たった問題

brew install してもインストールしたツールのコマンドが通らない

OSをアップグレードしなおしたらXcodeのコマンドラインツールもアップグレードしないとならないようです。

Xcodeを立ち上げて同意してインストールし直してください。

brew updateができない

どうやらbrewのupdateコマンドはgitを使って行っているようで上記の編輯(brew.rb)をすると、ローカルのワーキングディレクトリで更新されたことがローカルリポジトリにコミットされていないため、そこにリモートの更新をプル(マージ)できないために起こるようです。

cd $(brew –repository)
git commit -am ‘new ruby version 2.0′ 

を実行して1.8部分をCurrentにした変更をコミットしてあげましょう。

ちなみに私の場合はなぜか-aはできねえぞって怒られたので、次のようにしました。

owner@owner-mac:/usr/local (master *)$ git commit -am ‘new ruby version 2.0′
fatal: Paths with -a does not make sense.  <-- 怒られた。日本語でOK

owner@owner-mac:/usr/local (master *)$ git status <-- 変更状態を確認
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   Library/brew.rb <-- 更新のあったファイル

no changes added to commit (use "git add" and/or "git commit -a")

owner@owner-mac:/usr/local (master *)$ git add Library/brew.rb <-- 更新のあったファイルをインデックスに登録
owner@owner-mac:/usr/local (master +)$ git commit <-- インデックスをコミット

(git commitするとその後viかエディターが立ち上がってコメント入力を求められるので適当にコメントを入れてviなら:wq、エディターならそのまま保存して閉じます。)

これでbrew updateができるようになりました。

追記

どうやら、Yosemiteにする前にhomebrewを最新版にしておけば何事も問題なかったようです。嘘つきとかいってごめんなさい。

Yosemiteインストール前にbrewを最新にする。これが一番の決定策です。

定期的なアップデートって本当に大事なのね!まあ、この記事はそれを怠って問題にぶち当たった人のための記事なのだけど

さらに追記(11/9)

この記事に言及していただきました。こちらが一番簡単な解決策のようです。

Git のローカルリポジトリを更新して Homebrew を最新に - CHROMA

Gitポケットリファレンス

Gitポケットリファレンス

15時間でわかるGit集中講座

15時間でわかるGit集中講座

デザイナーからプログラマーまで 絶対わかるGitバージョン管理

デザイナーからプログラマーまで 絶対わかるGitバージョン管理

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)