MSYSとmsysgitの共存

Windowsgccを使う場合は普通MSYS+MinGWを入れ、MinGW Shellから使う。一方gitを使うときはmsysgitを入れ、Git Bashから使う。msysgitは名前の通りMSYSをベースにしたものだが、インストールは独立したものになっている(デフォルトではMSYS+MinGWはC:\MinGWに、msysgitはC:\Program Files\gitにインストールされる)。

そのためMinGW Shellからgitは使えないし、Git Bashからgccは使えない。そこで両方を統一して使う方法を考えてみた。

どちらもMSYSベースだからインストール先を同じにしてしまえば動くんじゃないかという単純な発想のもと、実際やってみた。試した環境は以下の通り。

  • Windows 7 Ultimate 64bit
  • Git-1.7.6-preview20110708.exe(msysgit)
  • mingw-get-inst-20110802.exe(MinGW + MSYS)

MinGW+MSYSを入れると、デフォルトでは以下のようなディレクトリ構成になる。

C:/MinGW/
     +- bin/
     +- doc/
     :
     +-msys/
     |   +- 1.0/
     |        +- bin/
     |        +- doc/
     |        :
     :

MinGW(つまりgccgdbなど)はC:\MinGW\binに入り、MSYS(lsやcpなど)はC:\MinGW\msys\1.0\binに入る。ということで、msysgitをC:\MinGW\msys\1.0以下に入るようにすればよさそうだ。

ではどちらを先に入れるか?MSYSとmsysgitでは同じファイルもあり(lsなど)、後から入れた方が上書きすることになるだろう。MinGW+MSYS -> msysgitの順に入れたところMSYSの挙動がおかしくなり、lsコマンドで固まるようになってしまった。仕方なくアンインストールしてmsysgit -> MinGW+MSYSの順にしたところ、うまく動いた。

インストール手順まとめ

  1. 既存のMinGW, MSYS, msysgitをアンインストールする
  2. msysgitを入れる
    • インストール先はC:\MinGW\msys\1.0
  3. MinGW + MSYSを入れる

これで完了。Git Bashからgccも使えるし、MinGW Shellからgitも使える。

もちろん公式な方法ではないので不具合があるかもしれない。試す人はそのところ要注意。