GitをMac OS X ServerであるECCS上で入れる(root権限なし)

追記

http://www.baru-san.net/archives/92にこれより新しい話が入っています。
尤も、ECCSにSSHできなくなった今そこまでしたいんかと思いますが。

まず最初に

今頃Gitも入ってないとかありえねーよ。root権限ある人は普通に入れましょう。

普通に導入したい

Gitをコンパイルしたことがある人ならわかると思うが、別にそんな難しいものではない。なので、ダウンロードしてきて普通にコンパイルすればいい。

./configure --prefix=${HOME}/local
make
make install

しかし、makeを叩いてもリンカにlibiconvとlibopensslのアーキテクチャが違うと言われてしまう。

依存するライブラリの導入

ここは紆余曲折があったのだが、結局これらのライブラリは普通に入れるのではなくてMacPortsで導入することにした。

~/src/MacPorts-2.0.3 % ./configure --prefix=${HOME}/local/macports --enable-readline --with-no-root-privileges --with-install-user=`id -un` --with-install-group=`id -gn` --build=i386 --with-universal-archs="i386" --with-sqlite3prefix=${HOME}/local
~/src/MacPorts-2.0.3 % make && make install
~ % port install openssl libiconv

なんかユニバーサルバイナリがどうのこうのエラー吐いてるけど気にしない!!i386だけで結構!!

Gitを導入する

結論からするとNO_FINKという環境変数をちゃんと定義しておかないと勝手に/optとか/swを見に行くらしいのでこれを定義しておく(値に意味はないと思う)。

~/src/git-1.7.7 % ./configure --prefix=${HOME}/local --with-iconv=${HOME}/local/macports --with-openssl=${HOME}/local/macports --without-tcltk && NO_FINK="YesPlease" make install

ちなみに、なぜかMacのリソースフォーク的なものを読んでコケることがあるので、ソースのディレクトリで

~/src/git-1.7.7 % rm **/._*

とかしておくといいよ!(ただしzsh限定、bashの人はfind|xargsでもしてください)