はじめに
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)
問題なく通りましたヽ(=´▽`=)ノ