homebrewくんがbrew updateに失敗するとき
死に方1
$ brew update remote: Counting objects: 4260, done. remote: Compressing objects: 100% (1380/1380), done. remote: Total 3668 (delta 2742), reused 3112 (delta 2281) Receiving objects: 100% (3668/3668), 555.72 KiB | 839 KiB/s, done. Resolving deltas: 100% (2742/2742), completed with 470 local objects. From git://github.com/mxcl/homebrew 76127a3..753dde9 master -> origin/master error: unable to unlink old 'README.md' (Permission denied) Updating 76127a3..753dde9 Error: Failed while executing git pull origin refs/heads/master:refs/remotes/origin/master
README.mdとかいうどうでも良いファイルのパーミッションでこけていますね。
とりあえず、/usr/local に向かいましょう。この問題が発生した人は、ここでREADME.mdのパーミッションを見てみると、ownerがrootになってると思います。というか/usr/local のパーミッションがrootになっていると思います。
どうでも良いですが今いるディレクトリのパーミッションは一つ下から見なくても
ls -dl
で見れるということを今日知りました。
蘇生法1
README.mdだけパーミッション変えてもラチが明かなかったような気がするので、/usr/local 以下全体のパーミッションをかえます。
sudo chown -R namae /usr/local
とかなんとかでownerを自分に変えます。
死に方2
やったか!?
$ brew update error: Your local changes to the following files would be overwritten by merge: share/man/man1/brew.1 Library/Homebrew/utils.rb Library/Homebrew/test/test_external_deps.rb Library/Homebrew/test/test_bucket.rb Library/Homebrew/tab.rb Library/Homebrew/keg_fix_install_names.rb Library/Homebrew/formula_installer.rb Library/Homebrew/formula.rb (中略) Library/Formula/apollo.rb Library/Formula/ape.rb Library/Aliases/fastcgi Library/Aliases/boost-jam Please move or remove them before you can merge. Updating 76127a3..753dde9 Aborting Error: Failed while executing git pull origin refs/heads/master:refs/remotes/origin/master
やってない(真顔)
あらゆるファイルの変更が取り残されているのでキマってしまっているようです。
git力が低いので変更を退避させるようなコマンドを忘れてしまいました(そもそも覚えていない)。
とりあえずググったら完全に一致なissueが引っかかったので読んでみたところ、そこに答えが書いてありました。
蘇生法2
an easy way to remove the files it's complaining about (the partial update) is
cd /usr/local
git add .
git stash
git reset --hard
and then
brew update
should work.
Error when brew updating, unable to unlink old README.md? · Issue #2906 · Homebrew/legacy-homebrew · GitHub
一旦git add . で全てのファイルをステージしたあとに、git stash でそれをスタックにぶち込んで表面上消し去ったあと、歴史を消し去っている感じですかね。
git stashに関してはPro Gitが解りやすかったです。http://progit.org/book/ja/ch6-3.html
Pro Gitは全体的に解りやすいので僕のように己のgit力に不安を抱えている人は読んだ方が良いです(まだほとんど読んでない)。