MinGW
Windows10
msys2

Windows10の開発環境をMSYS2で再構築

More than 1 year has passed since last update.

動機

Windowsマシンの開発関係セットアップ
http://qiita.com/hotchpotch/items/92667843a0a61e8b2cbb

MSYS2で快適なターミナル生活
http://qiita.com/Ted-HM/items/4f2feb9fdacb6c72083c

Windowsで使えるターミナルとシェルのまとめ
http://qiita.com/Ted-HM/items/9a60f6fcf74bbd79a904

Windows 10 にアップデートしたので、開発環境を再構築しました
http://hateda.hatenadiary.jp/entry/win-10-devenv

これらのページを観て、当初はMinGW + 付属のmsysを導入して使っていたのを、MSYS2を入れてMinGWを後から入れる形に変えたくなった。

OS環境

Windows10 64bit

やったことの順序

MSYS2のインストール

https://msys2.github.io/

ここから x86_64 版(64bit版)をダウンロードしてインストール。 C:\msys64 にインストールされる。MSYS2 64bitを起動するには、スタートメニュー→すべてのアプリ→「M」→「MSYS2 64bit」→「MSYS2 Shell」をクリックする。(MinGW用のショートカットもありますが、まだインストールしていないので、今は使用しません。)

MSYS2のpacmanを使う

pacmanは、ゲームではなくMSYS2のパッケージ管理システム。まずはパッケージ管理のデータベースの更新とpacmanのインストールを行う。

pacman -Sy pacman

一旦 exit コマンドでMSYS2を閉じて、再度「MSYS2 Shell」を起動。次のコマンドでMSYS2のうちコアなパッケージを更新する。

pacman --needed -S bash pacman pacman-mirrors msys2-runtime

※なお、公式サイトの説明では、pacmanのインストール後、 pacman -Syu なり pacman -Syuu なりを実行してコアなパッケージを更新するよう書かれていますが、コアなパッケージのみアップデート→MSYS2を終了して再起動→その他のアップデートという流れで実行しないとアップデート中にエラーが出る場合があります。その場合は、 MSYS2のアンインストール→OSの再起動→ C:\msys64フォルダが残っていたら完全削除 をして、最初からやり直すのが無難です。(参考:http://yaritakunai.hatenablog.com/entry/2015/11/07/201000

更新インストールがあって適用したら再度MSYS2を閉じて「MSYS2 Shell」を起動。他の必要な更新を行うコマンドを実行する。

pacman -Su

pacman初回利用時の注意

こちらの環境だけかもしれませんが、以下のようなエラーが表示されました。

(1/2) 更新 filesystem                              [#####################] 100%

      WARNING: the shell starting scripts have been unified. Please update your
      shortcuts to the following targets, otherwise they will STOP WORKING:

          * MSYS2_ROOT\msys2_shell.cmd -mingw32
          * MSYS2_ROOT\msys2_shell.cmd -mingw64
          * MSYS2_ROOT\msys2_shell.cmd -msys

(2/2) 更新 mintty                                  [#####################] 100%
警告: terminate MSYS2 without returning to shell and check for updates again
警告: for example close your terminal window instead of calling exit

minttyのアップデート後、上記の表示によりコマンドを受け付けなくなったため、「×」ボタンをクリックしてウィンドウを終了しました。

更に、filesystemの更新により、スタートメニュー内のショートカットが正常に実行できなくなりました。ショートカットのリンク先に指定されたbatファイルがアップデートで無くなったためです。アラート表示にも書かれているとおりに、「MinGW-w64 Win32 Shell」「MinGW-w64 Win64 Shell」「MSYS2 Shell」のそれぞれのリンク先をアラート表示の内容に編集してください。例えば、MSYS2 Shellの場合は、 C:\Windows\System32\cmd.exe /A /Q /K C:\msys64\msys2_shell.bat から C:\msys64\msys2_shell.cmd -msys に変更してください。

※さらに後ろに -use-full-path を入れておくとWindowsのPATHの設定を含めてくれるので、別途WindowsにインストールしたソフトウェアをMSYS2で利用できます。

MinGWをpacmanでインストール

「MSYS2 Shell」を起動。MinGWについては、pacmanで以下のものをインストールしておけば間違いないらしい。(参考:http://verifiedby.me/adiary/055

pacman -S base-devel msys2-devel mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain

今回は、特に理由がなかったので選択指定なし(all)でインストールしようとした、のだけど、 base-devel に入っている pactoys-gitrepman-git が衝突しているって出た。 repman-gitを削除するか聞かれた。迷ったので調べたところ、 pactoys-git をインストールしない方が良さそうな感じだったので、インストール時の設定で pactoys-git は外した。(参考:https://twitter.com/vc450j/status/737160037559193600

これでMinGWのインストールが完了。gccなどを利用したい場合は「MinGW-w64 Win64 Shell」の方を実行する。

後は適宜、必要なものをpacmanの pacman -S <パッケージ名> コマンドを使ってインストールしていけばOK。