Takuya71 のぶろぐ

外資系ソフトウェア会社で働いてます、認定スクラムマスター

homebrew の update でエラー発生

今日 homebrew のアップデートを行ったらところエラーが発生して update が出来ない状況が発生!!

出たエラーは以下のエラーです。

ERROR

/usr/local% brew update
error: Your local changes to the following files would be overwritten by merge:
  Library/Contributions/brew_zsh_completion.zsh
 ....
error: The following untracked working tree files would be overwritten by merge:
  Library/ENV/4.3/g++-4.2
 ....
Please move or remove them before you can merge.
Aborting
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master

なんか よくわかりませんが pull で失敗しているみたい。。。

こういう時は まずは お医者さんに相談です。
そう brew doctor を実行してみます。

brew doctor

/usr/local% brew doctor
Warning: The /usr/local directory is not writable.
Even if this directory was writable when you installed Homebrew, other
software may change permissions on this directory. Some versions of the
"InstantOn" component of Airfoil are known to do this.

You should probably change the ownership and permissions of /usr/local
back to your user account.
Warning: Your Xcode (4.5.2) is outdated
Please install Xcode 4.6.
Warning: You have uncommitted modifications to Homebrew
If this a surprise to you, then you should stash these modifications.
Stashing returns Homebrew to a pristine state but can be undone
should you later need to do so for some reason.
    cd /usr/local/Library && git stash && git clean -f

Xcode のバージョンはおいておくとして、
/usr/local が writable じゃないって診察されました。
パーミッション変えたつもりはないのですが、
何かを入れたときに変更されちゃったのでしょうか

パーミッション確認

/usr/local% ls -al
total 16
drwxr-xr-x@  17 root    wheel   578  1 29 08:53 .
drwxr-xr-x@  13 root    wheel   442  1  4 18:04 ..

/usr/local のパーミッション755 になって グループが wheel になってる。
グループは たしか staff だったはず

早速変更

パーミッションとグループ変更

usr/local% sudo chgrp staff .
/usr/local% sudo chmod 775 .
/usr/local% ls -al
total 16
drwxrwxr-x@  17 root    staff   578  1 29 08:53 .
drwxr-xr-x@  13 root    wheel   442  1  4 18:04 ..

もういちど brew doctor を実行してみますと

brew doctor で再チェック

/usr/local% brew doctor     
Warning: Your Xcode (4.5.2) is outdated
Please install Xcode 4.6.
Warning: You have uncommitted modifications to Homebrew
If this a surprise to you, then you should stash these modifications.
Stashing returns Homebrew to a pristine state but can be undone
should you later need to do so for some reason.
    cd /usr/local/Library && git stash && git clean -f

パーミッションの問題は消えたようです。
こんどは uncommitted のほうを解消する。

uncommitted の修正

/usr/local% cd /usr/local/Library && git stash && git clean -f
Saved working directory and index state WIP on master: 054f155 mutt: make thread/sidebar patches mutually exclusive
HEAD is now at 054f155 mutt: make thread/sidebar patches mutually exclusive
Not removing Contributions/examples/
Removing ENV/4.3/g++-4.2
....

以上で 修正が出来たかな
では brew update を実行。

brew update

/usr/local/Library% brew update
Updated Homebrew from 054f155c to 7486ff25.
==> New Formulae
clasp       git-flow-clone  mon       sqlcipher
...

おお 無事 update できました。

困ったときは brew doctor