2015/03/23(月)MSYS2を試してみる

日頃、研究のための作業のほとんどをubuntu上で行っています。研究者の多くはunix系の環境で仕事をすることを好んでおり、
  • macを使う。
  • windowsでvmware等の仮想環境を作り、その中でLinux等を使う。
  • windowsでcygwinを使う。
  • Linux等をマルチブートで使う。
などいろいろあると思います。本当に素のwindowsで仕事をする人は少ない気がします。拙kvライブラリも一応Visual Studioでも動くもののunix系で開発している関係上やはりunix系OSが使いやすい気がします。研究室の学生を見ると、windowsでcygwinを使っている人が大半のようです。自分はLinuxを入れることを勧めているのですが、やはり不慣れなOSで生活するのはつらいようで。

さて、windows環境のままunix系コマンドを使えるようにするソフトウェアとしてはcygwinが有名で長く使われてきていますが、最近MSYS2という同様のソフトウェアのいい評判をよく耳にします。そこで、試しにちょっと使ってみました。

元々、cygwinの亜種でmingw+msysというwindows nativeのexeを生成するソフトウェアがあるのですが、それの後継という位置づけで、
  • 比較的アップデートが早く、最新のソフトウェアが使える。
  • Arch Linuxで使われているpacmanというパッケージマネージャが使える。
という特徴があります。
上のページを見ながら、試しにインストールしてみました。インストール先はwindows7 64bit。
  • 64bit版のexe (msys2-x86_64-20150202.exe) をダウンロード。
  • 普通にインストーラを起動してインストール。デフォルトのc:\msys64に入れた。
  • スタートメニューからmsys2 shellを起動、終了、を2回繰り返す。
  • msys2 shell上で、最新にアップデートする。
    pacman -Sy(repositoryのデータを最新に)
    pacman --needed -S bash pacman pacman-mirrors msys2-runtime (再起動の必要のあるものを先にupdate)
    (msys2 shellを再起動)
    pacman -Su (残りをupdate)
    
pacmanパッケージマネージャの使い方は、以下の通り:
  • pacman -Ss 名前 で検索。
  • pacman -S 名前 でインストール。
  • pacman -R 名前 で削除。
さて、ややこしいことに、MSYS2はmsys2, mingw32, mingw64の3種類のbinaryを含んでおり、それぞれインストール場所も分けられています。msys2は、(cygwinがそんな感じであるように)msys-2.0.dllというmsys2独自のDLLがリンクされており、MSYS2環境下でしか動かないbinaryです。mingw32, mingw64はそれぞれwin32, win64のbinaryで、単独で動作します。gcc等のコンパイラも3種あって、msys2コンパイラで生成したexeはmsys2のDLLに依存しますが、mingw32/64のコンパイラで生成されたexeは単独で動作します。また、スタートメニューに登録された起動バッチファイルはmsys2_shell.bat, mingw32_shell.bat, mingw64_shell.batの3種類あって、msys2_shell.batから起動するとmsys2なbinaryにしかパスを通しません。mingw32/64.batで起動すると、mingwとmsys2の両方のbinaryにパスが通され、mingwの方が先に登録されているので優先されます。なるべく全てのbinaryをwindows nativeにしたかったが、どうしても無理なものだけmsys2依存で作成している、ということだと思います。

自分は、mingw64_shell.batを常用することにしました。

いくつかパッケージを入れて開発環境を整えてみました。前述したようにgccは3種類ありますが、公式Wikiの"Contributing to MSYS2"にあるように
pacman -S base-devel
pacman -S msys2-devel
pacman -S mingw-w64-i686-toolchain
pacman -S mingw-w64-x86_64-toolchain
で主だった開発に必要なものは大体入ります。更に、
pacman -S vim
pacman -S mingw-w64-x86_64-boost
pacman -S openssh
あたりを入れてみました。

この環境でkvライブラリはちゃんとコンパイル出来ました。mpfrを使ったものも、-lmpfr -lgmpを付けるだけでOK。

アンインストールも試してみましたが、コントロールパネルからで普通にきれいさっぱり消せるようです。

gccは4.9.2、boostは1.57.0であり、sshの最近のバグも修正されるなど、最新の環境が楽に使えるのはとてもいいですね。しばらく注目していようと思います。
OK キャンセル 確認 その他