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

# 動機

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

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

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

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

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

# OS環境

Windows10 64bit

# やったことの順序

## MSYS2のインストール

[https://msys2.github.io/](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](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](http://verifiedby.me/adiary/055)）

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

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

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

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