現在のmingw/msysのインストール方法

以前のMSYSのインストールは、コア部分はバンドルインストーラでいれて、足りないものはアーカイブをダウンロードして展開する、という感じで、管理がおそろしくめんどくさかった記憶がありました。
しかし最近更新しようとしてみたら、mingw-getですべて完結するようになっていて、管理がとても簡単になっていた。

古いMinGWの完全削除

新しいmingwを入れる前に、MinGWとMSYS双方をアンインストールし、その後残ったc:\MinGWやc:\msysもディレクトリごと完全に消しておきます。

mingw-get-instでインストール

最新のming-get-inst-YYYYMMDD.exeをダウンロードします(今現在だと20110530)。

このexeを実行し、進めていけば、c:/MinGW以下にmingwが、c:/MinGW/msys/1.0にMSYSが入ります。
(自分はチェックで全部入れるようにしたが、あとで下記のmingw-getコマンドでも追加できる)

minttyからMSYSを使う

スタートメニューから"MinGW Shell"ショートカットを実行すれば、MSYS環境に入ります。このMSYS環境でもcygwinと同じようにターミナルエミュレータでminttyが使えます。

まずMSYS環境で以下を実行し、MSYS用mintty.exeをインストールします:

mingw-get update
mingw-get upgrade
mingw-get install msys-mintty

minttyを実行するには、

  • "MinGW shell"のショートカットの"プロパティ"を開き、"リンク先"に"--mintty"オプションを入れる
C:\MinGW\msys\1.0\msys.bat --mintty

ちなみにminttyコマンドを直接実行して開く場合は以下のようにすれば良いようです。

c:\MinGW\msys\1.0\bin\mintty.exe /bin/bash --login -i

MinGWと併用する場合、pythonrubyWindowsビルドの物を使う場合が多いと思いますが、xtermであるminttyではWindowspythonirbの対話モードが機能しません。なので、通常の"MinGW Shell"ショートカットのプロパティで"簡易編集モード"にチェックを入れておいて使うのが一番良いかもしれません。

簡易編集モードは、ドラッグ選択で(矩形)選択モードになり、右クリックでコピー&モード終了、左クリックでキャンセル&モード終了。通常モード時に右クリックでペーストになります。


その他msysパッケージのインストール

種類はそれほどないですが、追加のmsysパッケージは同様にmingw-get installでいれられます。たとえば、

mingw-get install msys-openssl
mingw-get install msys-openssh

mingw-getで入れられるパッケージの一覧は

mingw-get list | less

で見ることができます。

MSYSのSSL CERTSを更新する

cygwinでのcerts更新方法( http://d.hatena.ne.jp/bellbind/20110609/1307622037 )とほぼ一緒です。

cd /var/ssl/certs
wget -O - http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
c_rehash

これで、wgetでもhttpsサイトに普通にアクセスできるようになります。

bash環境の設定

~/.profile (c:\MinGW\msys\1.0\home\USERNAME\.profile)を作ります。
たとえばxyzzypythonにpathを通す場合:

# clean windows path
export PATH=/usr/local/bin:/mingw/bin:/bin

export PATH="$PATH":/c/Python27:/c/Python27/Scripts
export PATH="$PATH":/c/Ruby187/bin
export PATH="$PATH":/c/Program\ Files\ \(x86\)/MiKTeX\ 2.9/miktex/bin/

export JAVA_HOME=/c/Program\ Files/Java/jdk1.7.0
export PATH="$PATH":"$JAVA_HOME"/bin
export PATH="$PATH":/d/opt/apache-ant-1.8.2/bin
export PATH="$PATH":/d/opt/groovy-1.8.0/bin

function xyzzy {
  HOME="c:/Users/bellbind" /d/opt/xyzzy/xyzzy "$@" &
}

# fallback to cygwin commands
export PATH="$PATH":/c/cygwin/bin

function emacs {
  /c/cygwin/bin/emacs-nox "$@" ; clear
}

おまけ: MSYSシェル上でscala実行

antやgroovyと違いscala-2.9.0.1の時点でコマンドスクリプトはMSYSに対応してません。
そこでMSYS上でコマンドを動かすための簡単なpatchを作りました。

scalaのREPLはbash風の編集コマンドが使えるmintty上のほうが使いやすいと思います。
(scalagithubに移行らしい https://github.com/scala/scala/wiki/Github-Move )