MSYS2の情報自体は調べれば出てくるのですがいちいち調べるのが面倒なので, ここに使用する際の注意点なども含めてメモっておきます.
Windows上でUnix-likeなコマンドライン開発環境を構築するためのツール群
- MinGW (Windows向けのgccツールチェイン) のために開発されていた MSYS というプロジェクトの後継
- Arch Linux のパッケージマネージャ (
pacman
) を移植したことでパッケージの導入・管理が飛躍的に容易になった - フォーク元のCygwinとは異なり,ネイティブ向けのアプリケーションの充実を目指しているらしい
-
Cygwin
すべての元凶- RedHatによるサポートがある
- パッケージの追加は基本的にGUIベースで面倒
apt-cyg
という非公式のパッケージマネージャがあるが...
-
babun
- Cygwinを使いやすくしたやつらしい(未検証)
- CLIベースのパッケージマネージャ
pact
が付属する - デフォルトシェルが (Oy-my-zsh導入済みの) zsh
-
Git for Windows (2.5.0 ~)
- MSYS2をベースにしたWindows向けのGitおよびBashなど最小限のUnix環境をまとめたもの
- 公式で配布されているインストーラにpacmanが含まれていないが,SDKを用いることでMSYS2として使用することができる
最初に気をつけるべき点をまとめた.
以後,MSYS2のインストールディレクトリを %MSYS2_ROOT%
と表記する(そのような環境変数が設定されるわけではない)
デフォルトでは%MSYS2_ROOT%/home
下にユーザディレクトリが設定されるため,
Windows側のユーザディレクトリを /home
に設定したい場合は/etc/fstab
を書き換える必要がある.
基本的にはUnixのそれと同じ要領で設定すれば良い. 筆者はユーザごとにリンク貼るのが面倒なので次のように設定している. リンク元のディレクトリのドライブ表記は小文字にする必要があることに注意(確か).
$ cat /etc/fstab
...
c:/Users /home
デフォルトの設定ではシンボリックリンクは使用できない.
単にファイル・ディレクトリのコピーとなる.
シンボリックリンクを使用したい場合には,環境変数MSYS
の値を書き換える必要がある.
MSYS2(というかCygwin)ではショートカット(.lnk
)を用いる方法とNTFSのショートカットを使用する方法の
いずれかを選択できる.
各変数の値とシンボリックリンクの動作は次の通り.
MSYS の値 |
ln -s の動作 |
---|---|
なし | リンクは作成されず,単にコピーされる |
winsymlinks , winsymlinks:lnk |
ショートカット(.lnk )が作成される |
winsymlinks:nativestrict |
NTFSのシンボリックリンクが使用される |
winsymlinks:native |
シンボリックリンクを使用(失敗時はショートカット) |
ショートカットによるシンボリックリンクは,
MSYS2内であれば(MSYS
の値に関わらず)シンボリックリンクとして解釈される(要検証).
また当然ではあるが,winsymlinks:lnk
設定下で作成したシンボリックリンクはWindowsのそれとは異なるため,
msys-2.0.dll
に依存したバイナリ以外で使用することが出来ない点に注意が必要である.
現状のMSYS2では,環境変数MSYSTEM
の値に応じて$PATH
などの切り替えを行っている.
これらの環境変数の設定は通常起動に使用するバッチファイル内で行っているため気にする必要がないが,
直接minttyを起動する場合や別のターミナルエミュレータを使用する場合には事前に設定する必要がある.
バッチファイルと各変数の対応は以下の通りである.XX
には32 or 64が入るので適宜置き換えること.
使用するバッチファイル | MSYSTEM の値 |
$PATH に設定される値 |
---|---|---|
msys2_shell.bat |
MSYS |
/usr/bin , %PATH% |
mingwXX_shell.bat |
MINGWXX |
/mingwXX/bin , /usr/bin , %PATH% |
MSYS2に標準でインストールされているgitはMSYS2向けにビルドされたものであり,Git for Windowsで提供されているものとは異なる. そのため,動作が遅い・Windowsの認証情報マネージャを扱う事ができないなどの問題がある. 以下ではGit for Windowsで提供されているMinGW-64向けにビルドされたGitを使用するための手順を説明する.
まずリポジトリを登録する.以下の内容を /etc/pacman.conf
に追記する
# 以下を追記する
[git-for-windows]
Server = https://dl.bintray.com/$repo/pacman/$arch
SigLevel = Optional
追加後,パッケージデータベースを更新してMinGW版のgitをインストールする
$ pacman -Syy # パッケージデータベースを更新
$ pacman -S mingw-w64-x86_64-git
※ HTTPSの証明書のパスがおかしいので,https接続に使用する証明書ファイルのパスを次の手順で更新する.
$ git config --system http.sslcainfo /mingw64/ssl/certs/ca-bundle.crt
メモ: mingw-w64-x86_64-ca-certificates
を再インストールする方が楽?
- fish (パッケージはあるが動作がおかしい)
- 各種開発環境
- gdc, ldc2 (dmd2は知らない)
- ghc
- vagrant
- rust (古い, cargoがない)