ひと月ほど前に使ってたコンピュータが壊れて、自分のホームディレクトリ以下のフルバックアップ以外はほぼなくなりました(ホントに困る事にはなりませんでしたが)。んで、折に触れてソフトウェアのインストールをしてます。今日はMinGW/MSYS。
Cygwinでもいいんだけど(Cygwinは既にインストール済み)、MinGW/MSYS(http://www.mingw.org/)のほうが僕の好み。現時点での最新版は MinGW-5.1.6.exe。http://sourceforge.net/projects/mingw/files/ からダウンロードできます。Windowsインストーラなんで特に問題はないでしょう。適当な場所(僕は C:\Installed\MinGW)にインストールして、環境変数Pathにbinを追加すれば、gcc, as, ar, nm などが使えるようになります。hello.c をコンパイル&実行して確認。
MinGWだけでは、diff, tar, grep, sed, make*1 などがありません。http://www.mingw.org/wiki/MSYS のなかにあるリンクからMSYS-1.0.11.exeをダウンロード。これもWindowsインストーラですから指示に従うだけ。MSYSのbinもサーチパス(環境変数Path)に加えれば、よく使うコマンドがWindowsコマンドプロンプトから使えるようになります。
Windowsコマンドプロンプトから sh --login とすればbashに入れます。MSYS独自のターミナルウィンドウであるRTVXを使いたいときは、msys.batを使うことになるでしょう。このmsys.batはなんだか使いにくいので、少し修正したパッチを下に載せます(パッチの当て方は、「パッチの作り方と当て方はこうするもんね」を参照してください)。修正点は次です。
- msys/1.0/ に置いても、msys/1.0/bin/ に置いても、どちらでも正常に動作します。bin/ に置けば環境変数Pathを増やす必要がありません*2。
- 作業用の環境変数をローカルにしたので、大域環境変数を汚しません。
- msys.batを起動したコンソールコマンドウィンドウを閉じません。
- 環境変数RXVT_GEOMETRYにより、RXVTウィンドウのサイズを指定できます。例えば: set RXVT_GEOMETRY=80x40
使い方は:
- msys : これは、sh --login と同じです。
- msys --rxvt : RXVT を起動します。
- msys --rxvt MSYS : 色の設定がMSYSモードになります。
- msys --rxvt MINGW32 : 色の設定がMINGW32モードになります。
色の設定を指定したいときは次の環境変数を使います。色の名前は X11 colors でしょうから、CSSと同じ名前が使えると思います、たぶん。
- MSYSBGCOLOR, MSYSFGCOLOR : MSYSモードの背景色と前景色
- MINGW32BGCOLOR, MINGW32FGCOLOR : MINGW32モードの背景色と前景色
MSYSモード/MINGW32モードというのは、背景色と前景色の組み合わせのことで、他に特別な意味はありません。
注意: rxvtの -backspacekey オプションの値として Ctrl-H(文字番号8)のコードが生で入っています。
--- msys.bat.orig 2009-07-11 15:34:35 +0900 +++ msys.bat 2010-01-08 11:19:19 +0900 @@ -15,7 +15,9 @@ rem ember value of GOTO: is used to know recursion has happened. if "%1" == "GOTO:" goto %2 -if NOT "x%WD%" == "x" set WD= +setlocal +set WD=%~dp0 +if "x%RXVT_GEOMETRY%" == "x" set RXVT_GEOMETRY=80x25 rem ember command.com only uses the first eight characters of the label. goto _WindowsNT @@ -67,12 +69,12 @@ :unknowncon echo %MSYSCON% is an unknown option for msys.bat. pause -exit 1 +goto EOF :notfound echo Cannot find the rxvt.exe or sh.exe binary -- aborting. pause -exit 1 +goto EOF rem If you don't want to use rxvt then rename the file rxvt.exe to something rem else. Then sh.exe will be used instead. @@ -89,13 +91,13 @@ if "%MSYSTEM%" == "MINGW32" set BGCOLOR=%MINGW32BGCOLOR% if "%MSYSTEM%" == "MINGW32" set FGCOLOR=%MINGW32FGCOLOR% -start %WD%rxvt -backspacekey -sl 2500 -fg %FGCOLOR% -bg %BGCOLOR% -sr -fn Courier-12 -tn msys -geometry 80x25 -e /bin/sh --login -i -exit +start %WD%rxvt -backspacekey -sl 2500 -fg %FGCOLOR% -bg %BGCOLOR% -sr -fn Courier-12 -tn msys -geometry %RXVT_GEOMETRY% -e /bin/sh --login -i +goto EOF :startsh if NOT EXIST %WD%sh.exe goto notfound -start %WD%sh --login -i -exit +%WD%sh --login -i +goto EOF :EOF
*1:MinGW/bin/ に mingw32-make.exe というコマンドがありますが、これはMSYSと相性が悪いようです→http://d.hatena.ne.jp/m-hiyama/20071102/1193965091
*2:僕の環境では、C:\Installed\MinGW\bin;C:\Installed\msys\1.0\bin をパスに追加しているだけです。