脊髄反射公的目録
tumblr
アーカイヴ

git導入.そして死〜

今,kernel.orgが例のあれ*1のメンテナンスで落ちているので,gitのインスコが失敗します.
困っていたんですが,HomebrewでGitのインストールが失敗する - ほげほげ(仮)
上のリンクの通りにしたらうまく行きました.


そして,

  • gitのいるところを確認
$ which git
/usr/bin/git

あれれ?パスが違う.


homebrewでインスコしたgitでなくXcodeについてきたgitが使用されるようになってました.
なので,すべてのMacでgitな人は今すぐバージョンを確認するべき - Meltdown Countdown rev.を参考に

  • /etc/pathsを編集
/usr/bin
usr/local/bin
/bin
/usr/sbin
/sbin

から

usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

に変更.

  • PATHの優先度を確認
$ echo $PATH
/usr/bin:/usr/local/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin

設定が反映されていない!!


なので,
/etc/profileを編集して元のPATHをクリアしようと,

$ sudo emacs /etc/profile 

したのですが/etc/profileはread onlyなので書き込めないよとemacsに忠告されました.
sudoってルート権限を得るためのコマンドじゃないの?とまたハマりました.
実は,/etc/profileのアクセス権は-r--r--r-- だったのです.rootですら書き込み不可能!

  • 所有者が書き込みができるようにアクセス権を変更
$ chmod 644 /etc/profile
  • そんでもって下記のように/etc/profileを編集しPATHをクリア

path_helperにあわせてprofileを調整。


/etc/pathsファイルに/usr/binや/binが書かれているのに、元のPATHを優先する必要はない気がします。
そこで、/etc/profileでPATHをクリアしてみました。

if [ -x /usr/libexec/path_helper ]; then
         PATH="" 
         eval `/usr/libexec/path_helper -s`
fi

これでもう一度ログインしてみると、

$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

うまくいきました!
同様に/etc/zprofile, /etc/csh.loginにも設定します。csh.login には setenv PATH "" とします。chshでbash,csh,zshにログインシェルを変更してログインし、echo $PATHが正しく設定されていることを確認します。
元のPATHを消しちゃうのはちょっと心配な気もしますが、これよりも前にPATHを追加することってなさそうなので、たぶん大丈夫でしょう。

最近のMac OSXで、PATHをスマート(?)に管理するやり方。 - こせきの技術日記

  • PATHの優先度を確認
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/usr/local/bin/git

成功しました!
ようやくPATHの優先度が反映されました.
リンク先の人たちありがとう.

*1:[http://linux.slashdot.jp/story/11/09/02/0815212/Kernel.org%E3%80%81%E4%BE%B5%E5%85%A5%E3%81%95%E3%82%8C%E3%82%8B:title]

ふぁぼ
jones_millionの今読んでる本