HomebrewがMacのVerupで動作しなくなった時にやったこと

f:id:project-unknown:20170903131826p:plain

はじめに

MacをEl Capitanにした時も発生したのですが、Sierraでも発生してこれまでとちょっと対策が違ったので記事にします。

PlantUMLをbrewから入れようとしたのですが、以下のエラーが発生しました。

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

ちなみに当たり前なのですが、以下のコマンドみたいにversionの確認すらできません。

brew --version  

検索してみても、似たような所で上記エラーと一緒にRubyの方でもエラーが発生している記事ばかりで軽く詰み掛けたのですが、色々と試行錯誤してみます。

brewのRubyのPathを変更する

とりあえずエラーに出ているrubyのPathが1.8と明らかに古かったので、そこを直してみます。

$ vim /usr/local/bin/brew

brefore

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

after

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

結果

以下な感じでエラーが別な所に伝搬しました。

/Library/Ruby/Site/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': /usr/local/Library/Homebrew/extend/pathname.rb:185: invalid multibyte escape: /^\037\213/ (SyntaxError)

brewを最新の状態にする

もう

$ brew update

上記すら効かない状態だったので、gitから最新の状態にする (以下、実際はadmin権限でやってます)

$ cd /usr/local/Homebrew
$ git fetch origin

これすらエラーになったらどうしようと不安になったのですが、これは問題なく動作しました。

この状態で再度以下のコマンドを叩きます

$ brew update
Error: /usr/local must be writable!

えー(;・∀・)

ちょっと/usr/local周りの権限を弄るのは怖いですが、どうやらよくあるエラーっぽくて、権限を変更してupdateするのが定石みたいなので、変更して対応します。

$ sudo chown -R $(whoami):admin /usr/local
$ brew update

これでうまく通りました。実行後に、

Homebrew no longer needs to have ownership of /usr/local. If you wish you can
return /usr/local to its default ownership with:
  sudo chown root:wheel /usr/local

こんな配慮されているということは公式的にも問題ない対応みたいですね。

流石に怖いので権限を元に戻しておきます。

$ sudo chown root:wheel /usr/local

最後に冒頭で失敗したversion確認。

$ brew --version  

Homebrew >1.2.0 (no git repository)
Homebrew/homebrew-core (git revision 4572; last commit 2017-09-02)

問題なく通りましたヽ(=´▽`=)ノ