DRYな備忘録

Don't Repeat Yourself.

brew upgrade gitしたのにバージョンあがらない問題

問題

% git --version
git version 1.9.3

ふむ

% brew update
% brew upgrade git
git-2.2.1 installed

はい

% git --version
git version 1.9.3

ふぁ!?

% brew upgrade git
Error: git-2.2.1 already installed
% git --version
git version 1.9.3

f:id:otiai10:20141219100334p:plain

調査

コマンドPATHでしょうねたぶん

% which git
/usr/bin/git
% /usr/bin/git --version
git version 1.9.3
% /usr/local/bin/git --version
git version 2.2.1

/usr/local/bin/gitとは、brew管理下のCellerにあるbinへのsymlink

% ls -l /usr/local/bin/git
lrwxr-xr-x  1 otiai10  admin  27 12 19 09:37 /usr/local/bin/git -> ../Cellar/git/2.2.1/bin/git

で、なんで/usr/binが優先されるかというと

% cat /etc/paths
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

解決

上優先なので。上記ブログでは「/etc/pathsを編集するのも良いですが、出来る限り既存のシステムファイルは弄りたくありません。」っておっしゃってるけど、やっちゃう

+/usr/local/bin
 /usr/bin
 /bin
 /usr/sbin
 /sbin
-/usr/local/bin

で、shellにログインし直すと

% which git
/usr/local/big/git
% git --version
git version 2.2.1

めでたしめでたし

なんかgit以外で問題おきたらきっとこの操作が原因なんだろうな

追記

やっぱりあかんやろ、という気持ちになったので、.zshrcでどうにかしよう。

% which git
/usr/local/bin/git

とりあえず/etc/pathsはもとに戻してログインし直すと戻るはず

% which git
/usr/bin/git

で、改めて

~/.zshrc

# 末尾に
export PATH=/usr/local/bin:$PATH

で、

% source ~/.zshrc

すっと

% which git
/usr/local/bin/git
% git --version
git version 2.2.1

これでマジでめでたしです。

DRYな備忘録として