文書の過去の版を表示しています。
MSYS2でEmacs環境とUNIXライク環境を作る
試した環境
- Windows 10 (x64) バージョン2004
- msys2-x86_64-20200903
MSYS🤔MSYS2😧MinGW😰Mingw-w64😇
Windows上にUNIXライクな環境を構築するソフト群は、歴史的経緯により、MSYS, MSYS2, MinGW, Mingw-w64 と似たような名前のものが存在している。組み合わせて使われることが多いが、それぞれ独立で動くソフトウェアパッケージである。
当方も詳しくはないので間違ってるかもしれないが、簡単にまとめるとこんな感じ。
- MinGW (Minimalist GNU for Windows)
- 32ビットWindowsネイティブ環境に移植したgccと関連ツールを、Win32 APIを使ったWindowsアプリ開発環境として最小限の構成でまとめたもの。
- MSYS (Minimal SYStem)
- MinGWを補完する目的で作られた、Windowsネイティブ環境向けbash, makeなどのUNIXライクなコマンドシェル環境を提供するもの。
- Mingw-w64
- MinGWからフォークして作られた、追加のWin32 APIや64ビット対応を含むMinGW相当のもの。
- MSYS2
- 64ビットWindowsネイティブ環境向けに、シェル環境を含む、主にUNIX系やオープンソース由来のソフトウェアの配布・構築プラットフォーム。
各ソフトの機能や動作環境を表にするとこんな感じ。
| ソフト | シェル | コンパイラ | 動作環境 | 開発ターゲット | ||
|---|---|---|---|---|---|---|
| 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をインストールする。
公式サイトからインストーラを取ってきて、これまた公式サイトのスクリーンショット付き解説の通りに進める。といっても、基本は「次へ」ボタンを押してくだけ。最後に「今すぐMSYS2 64bitを実行します。」にチェックを入れて「完了」ボタンを押す。
MSYS2が起動するので、MSYS2のコアシステムとパッケージデータベースを更新する。
$ pacman -Syu
コアシステムに更新があればMSYS2を再起動し、再度パッケージを更新する。
$ pacman -Su
mingw32?mingw64?
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
みんな大好きEmacsをインストール。/-vim?知らない子ですねぇ…-/
パッケージ名はmingw64/より後ろを書いてやればよい。
$ pacman -S mingw-w64-x86_64-emacs
依存関係を解決しています...
衝突するパッケージがないか確認しています...
警告: 循環依存が検出されました:
警告: mingw-w64-x86_64-freetype は依存パッケージ mingw-w64-x86_64-harfbuzz の前にインストールされます
パッケージ (44) mingw-w64-x86_64-brotli-1.0.9-1 mingw-w64-x86_64-bzip2-1.0.8-1
mingw-w64-x86_64-ca-certificates-20200601-1 mingw-w64-x86_64-expat-2.2.9-1
mingw-w64-x86_64-freetype-2.10.3-1 mingw-w64-x86_64-gcc-libs-10.2.0-4
mingw-w64-x86_64-gettext-0.19.8.1-9 mingw-w64-x86_64-glib2-2.66.1-1
mingw-w64-x86_64-gmp-6.2.0-3 mingw-w64-x86_64-gnutls-3.6.15-2
mingw-w64-x86_64-graphite2-1.3.14-2 mingw-w64-x86_64-harfbuzz-2.7.2-1
mingw-w64-x86_64-jansson-2.12-1 mingw-w64-x86_64-libffi-3.3-1
mingw-w64-x86_64-libiconv-1.16-1 mingw-w64-x86_64-libidn2-2.3.0-1
mingw-w64-x86_64-libpng-1.6.37-3 mingw-w64-x86_64-libsystre-1.0.1-4
mingw-w64-x86_64-libtasn1-4.16.0-1 mingw-w64-x86_64-libtre-git-r128.6fb7206-2
mingw-w64-x86_64-libunistring-0.9.10-2
mingw-w64-x86_64-libwinpthread-git-8.0.0.6001.98dad1fe-3
mingw-w64-x86_64-libxml2-2.9.10-4 mingw-w64-x86_64-libyaml-0.2.5-1
mingw-w64-x86_64-mpc-1.2.0-2 mingw-w64-x86_64-mpdecimal-2.5.0-1
mingw-w64-x86_64-mpfr-4.1.0-3 mingw-w64-x86_64-ncurses-6.2-2
mingw-w64-x86_64-nettle-3.6-2 mingw-w64-x86_64-openssl-1.1.1.h-1
mingw-w64-x86_64-p11-kit-0.23.20-2 mingw-w64-x86_64-pcre-8.44-1
mingw-w64-x86_64-python-3.8.6-3 mingw-w64-x86_64-readline-8.0.004-1
mingw-w64-x86_64-sqlite3-3.33.0-1 mingw-w64-x86_64-tcl-8.6.10-1
mingw-w64-x86_64-termcap-1.3.1-6 mingw-w64-x86_64-tk-8.6.10-2
mingw-w64-x86_64-universal-ctags-git-r7253.7492b90e-1
mingw-w64-x86_64-wineditline-2.205-3 mingw-w64-x86_64-xpm-nox-4.2.0-5
mingw-w64-x86_64-xz-5.2.5-1 mingw-w64-x86_64-zlib-1.2.11-7
mingw-w64-x86_64-emacs-27.1-1
合計ダウンロード容量: 87.12 MiB
合計インストール容量: 549.86 MiB
:: インストールを行いますか? [Y/n] y
(以下、省略)
ssh
いわゆるsshコマンドはmsys/opensshパッケージに含まれる。
$ pacman -Ss openssh
PuTTYも準備されているのでお好みで。
$ pacman -Ss mingw-w64-x86_64-putty