Windows上にUNIXライクな環境を構築するソフト群は、歴史的経緯により、MSYS, MSYS2, MinGW, Mingw-w64 と似たような名前のものが存在している。組み合わせて使われることが多いが、それぞれ独立で動くソフトウェアパッケージである。
当方も詳しくはないので間違ってるかもしれないが、簡単にまとめるとこんな感じ。
各ソフトの機能や動作環境を表にするとこんな感じ。
ソフト | シェル | コンパイラ | 動作環境 | 開発ターゲット | ||
---|---|---|---|---|---|---|
x86 | x64 | x86 | x64 | |||
MinGW | - | ○ | ◎ | ○ | ○ | × |
MSYS | ○ | - | ◎ | ○ | - | - |
Mingw-w64 | - | ○ | ◎ | ◎ | ◎ | ◎ |
MSYS2 | ○ | ○ | × | ◎ | ◎ | ◎ |
実の所、Mingw-w64はMSYS2のパッケージリストに含まれていたりする。
MSYS2にはEmacsやOpenSSH、PuTTYにPythonなど多数のWindows向けバイナリパッケージも含まれているので、64ビット環境ならMSYS2を使う事で簡単に統合的なUNIXライクな環境を作ることができる。MinGW, MSYS, NTEmacs, PuTTYあたりを個別にインストールし頑張って連携させ、それぞれの更新も手動で行っていた頃と比べると隔世の感がある。
まずはMSYS2をインストールする。
公式サイトからインストーラを取ってきて、これまた公式サイトのスクリーンショット付き解説の通りに進める。といっても、基本は「次へ」ボタンを押してくだけ。最後に「今すぐMSYS2 64bitを実行します。」にチェックを入れて「完了」ボタンを押す。
MSYS2が起動するので、MSYS2のコアシステムとパッケージデータベースを更新する。
$ pacman -Syu
コアシステムに更新があればMSYS2を再起動し、再度パッケージを更新する。
$ pacman -Su
OpenSSHのようなホームディレクトリを頑なに'/home/ユーザー名'でアクセスするソフト用に、fstabでマウント設定を行う。
$ notepad /etc/fstab
メモ帳でfstabファイルが開くので、「d:/path/to/home/username /home/username」の1行を追加する。
C:/Home/Decomo /home/Decomo
一度手動でマウントしないと自動マウントされないっぽい?
$ mount /home/Decomo
MSYS2のターミナルを再起動して、正しくマウントされるか確認する。
$ mount C:/Home/Decomo on /home/Decomo type ntfs (binary,posix=0,user) ★この行があればOK U:/msys64 on / type ntfs (binary,noacl,auto) U:/msys64/usr/bin on /bin type ntfs (binary,noacl,auto) C: on /c type ntfs (binary,noacl,posix=0,user,noumount,auto)
pacmanでアプリを入れる際、mingw32, mingw64, msysのプレフィックスが付いた同名アプリが出てくることに気付くだろう。例えばemacsならこんな感じで。
$ pacman -Ss emacs mingw32/mingw-w64-i686-emacs 27.1-1 The extensible, customizable, self-documenting, real-time display editor (mingw-w64) mingw64/mingw-w64-x86_64-emacs 27.1-1 The extensible, customizable, self-documenting, real-time display editor (mingw-w64) msys/emacs 26.3-1 (editors) The extensible, customizable, self-documenting, real-time display editor (msys2)
これらの意味の詳細は見つけられてないが、少なくともmingw32とmingw64はそれぞれ32ビット版、64ビット版を示しているようだ。その後のmingw-w64はビルドに使ったツールチェインの事と思われる。
とりあえずはmingw64の方を使っておけば大丈夫かと。
みんな大好きEmacsをインストール。vim?知らない子ですねぇ…
パッケージ名はmingw64/より後ろを書いてやればよい。
$ pacman -S mingw-w64-x86_64-emacs
MSYS2の環境でイイ感じい使うための設定。
; MSYS2の実行パスを通す。Windowsの環境変数で通していれば不要。 (setenv "PATH" (format "U:/msys64/usr/bin:%s" (getenv "PATH"))) ; bashを指定 (setq shell-file-name "U:/msys64/usr/bin/bash.exe") (setq explicit-shell-file-name shell-file-name) ; NULLデバイスの設定。標準ではWindowsの"NUL"になっており、MSYS2のバイナリで上手く扱えない。 (setq null-device "/dev/null")
いわゆるsshコマンドはmsys/opensshパッケージに含まれる。
$ pacman -Ss openssh
PuTTYも準備されているのでお好みで。
$ pacman -Ss mingw-w64-x86_64-putty