MSYS2・MinGWって何者?

時間を空けると「このソフト何のために使ってるんだっけ?」みたいなものが増えるため、備忘録としていろいろ書いておく。

MSYS2

そもそもMSYS2が何者なのかはホームページによると、

MSYS2は、Windowsネイティブ・ソフトウェアをビルド、インストール、実行するための使いやすい環境を提供するツールとライブラリのコレクションです。

引用:MSYS2

とのこと。コンパイラmingw-w64の主な入手手段である。ただ、MSYS2インストール時に得られる開発環境としてのMSYS2・MinGW32・MinGW64と、コンパイラmingw-w64は別の存在なので注意が必要。
パッケージマネージャとしてはpacmanが用意されていて、以下のようなコマンドをよく使う。

以下pacmanコマンドのオプションについて、使用頻度の高い順に並べてみた。
ヘルプのやり方だけ覚えておけば、迷った時に確認できるだろう。

  1. pacman -hでヘルプ。
  2. pacman -S -hで-Sオプションのヘルプ。
  3. pacman -Suでパッケージのアップデート(事前にupdate-coreが必要)。
  4. pacman -Ss [pattern]でパッケージを検索。
  5. pacman -Sl | grep [pattern]でもだいたい分かる。
  6. pacman -S [package]でインストール。
  7. pacman -Rs [package]でアンインストール。
  8. pacman -Sgでパッケージグループの一覧を表示。
  9. pacman -Qqeでインストール済みのパッケージ一覧を表示。
  10. pacman -Si [package]で詳しい情報を表示。
  11. pacman -Scで使っていないキャッシュを削除。

引用:MSYS2で快適なターミナル生活 - Qiita

pythonの環境をmingw-w64で構築しようと試みたのだが、matplotlibを使うと「importerror: dll load failed while importing ft2font: 指定されたプロシージャが見つかりません。」というエラーが出る。解決も簡単ではなさそうなのでMSYS2でのpython環境構築は諦めた。ネット上のpython情報はanacondaやpipを用いたものがほとんどだし賢明な判断だと思う。ただpython自体をMinGWから削除することはできなそうなので、別の方法でpythonをインストールした際には競合に気を付ける必要がある。

mingw-w64

mingw-w64は何者なのかというと以下の通り。

Mingw-w64はオリジナルのmingw.orgプロジェクトを発展させたもので、Windowsシステム上でGCCコンパイラをサポートするために作られた。

引用:MinGW-w64

要するにコンパイラである。
自分はC/C++コンパイルgccを、デバッグgdbを使うためにmingw-w64を利用している。mekeもこちらに入れているがまだ活用できていない。

参考

「このソフトって何だ?」を考えるとき、まずはそのソフトのホームページを見るのが一番わかりやすいなと今回思った。

MSYS2

MinGW-w64

各ソフトの違いを考える上で以下のサイトは非常に役に立った。

Cygwin, MSYS, MSYS2, MinGW, mingw-w64, WSL, WSL2 の違い.md (github.com)