14
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Windows で快適なシェル生活を送りたい

Last updated at Posted at 2016-10-12

MSYS2

MSYS2 は,最新の Cygwin と MinGW-w64 をもとにした UNIX ライクのシェル環境です.
デフォルトのターミナルとシェルは mintty と bash,パッケージ管理には Arch Linux の pacman を採用しています.

MSYS の msys,MinGW の mingw32 と mingw64 の 3 種類のバイナリがあり,それぞれ別々のディレクトリにインストールされます.
MSYS の gcc で生成したバイナリは msys-2.0.dll に依存するため,MSYS2 環境下でしか実行することができませんが,MinGW の gcc で生成したバイナリは単独で実行することができます.

インストール

インストーラは ここ からダウンロードできます.

セットアップが完了すると,

  • MSYS2 MSYS
  • MSYS2 MinGW 32-bit
  • MSYS2 MinGW 64-bit

の 3 つのシェルが使えるようになります.
いずれも実体は C:\msys64\msys2_shell.cmd です.
これらはすべて MSYS のバイナリがインストールされたディレクトリをパスに含みますが,起動時のオプションによっては MinGW のディレクトリもパスに含めます.
とりあえず,MSYS2 MinGW 64-bit を使えばいいでしょう.

続いて,pacman の更新を行います.
まず,パッケージデータベースを更新し,pacman の更新を行います.

pacman -Sy pacman

必要があればターミナルを再起動します.
次に,パッケージデータベースとコアシステムパッケージを更新します.

pacman -Syu

必要があれば,再度ターミナルを再起動してパッケージの更新を継続します.

pacman -Su

以上でインストールは終了です.

パッケージの管理

pacman は非常に使いやすいパッケージ管理システムです.

パッケージの検索
% pacman -Ss [パッケージ名]

パッケージのインストール
% pacman -S [パッケージ名]

パッケージの削除
% pacman -R [パッケージ名]

パッケージとそれ以外で使用されていない依存関係にあるパッケージを削除
% pacman -Rs [パッケージ名]

リポジトリとローカルパッケージデータベースとの同期およびアップグレード
% pacman -Syu

インストール済みパッケージの検索
% pacman -Qs [パッケージ名]

インストール済みパッケージの情報
% pacman -Qi [パッケージ名]

キャッシュと使われていないリポジトリのクリーンアップ
% pacman -Scc

インストール済みパッケージの表示
% pacman -Q

Windows にこだわる必要が無いのであれば,この機会に Arch Linux に移行してみてはいかがでしょうか.

pacman の設定

パッケージを検索したときに msys, mingw32, mingw64 それぞれのバイナリが表示されて見づらいので,mingw32 のバイナリを表示しないようにします.

pacman.conf
-[mingw32]
-Include = /etc/pacman.d/mirrorlist.mingw32
+#[mingw32]
+#Include = /etc/pacman.d/mirrorlist.mingw32

カラー表示を有効にします.

pacman.conf
-#Color
+Color

Zsh のインストール

pacman から Zsh 本体と設定をインストールしておきます.

pacman -S zsh grml-zsh-config

次に,ターミナル起動時に Zsh が起動するように C:\msys64\msys2_shell.cmd の設定を変更します.

msys2_shell.cmd
-start "%CONTITLE%" "%WD%mintty" -i /msys2.ico /usr/bin/bash --login %1 %2 %3 %4 %5 %6 %7 %8 %9
+start "%CONTITLE%" "%WD%mintty" -i /msys2.ico /usr/bin/zsh --login %1 %2 %3 %4 %5 %6 %7 %8 %9

ターミナルを再起動すると Zsh がお出迎えしてくれます.

gcc のインストール

pacman で gcc のパッケージを検索してみます.

pacman -Ss gcc
mingw64/mingw-w64-x86_64-gcc 6.2.0-2 (mingw-w64-x86_64-toolchain)
    GNU Compiler Collection (C,C++,OpenMP) for MinGW-w64
mingw64/mingw-w64-x86_64-gcc-ada 6.2.0-2 (mingw-w64-x86_64-toolchain)
    GNU Compiler Collection (Ada) for MinGW-w64
mingw64/mingw-w64-x86_64-gcc-fortran 6.2.0-2 (mingw-w64-x86_64-toolchain)
    GNU Compiler Collection (Fortran) for MinGW-w64
mingw64/mingw-w64-x86_64-gcc-libgfortran 6.2.0-2 (mingw-w64-x86_64-toolchain)
    GNU Compiler Collection (libgfortran) for MinGW-w64
mingw64/mingw-w64-x86_64-gcc-libs 6.2.0-2 (mingw-w64-x86_64-toolchain)
    GNU Compiler Collection (libraries) for MinGW-w64
mingw64/mingw-w64-x86_64-gcc-objc 6.2.0-2 (mingw-w64-x86_64-toolchain)
    GNU Compiler Collection (ObjC,Obj-C++) for MinGW-w64
mingw64/mingw-w64-x86_64-lcov 1.12-1
    front-end for GCC's coverage testing tool gcov
msys/gcc 5.3.0-3 (msys2-devel)
    The GNU Compiler Collection - C and C++ frontends
msys/gcc-fortran 5.3.0-3 (msys2-devel)
    Fortran front-end for GCC
msys/gcc-libs 5.3.0-3 (base)
    Runtime libraries shipped by GCC
msys/mingw-w64-cross-gcc 5.3.0-1 (mingw-w64-cross-toolchain mingw-w64-cross)
    Cross GCC for the MinGW-w64

mingw64/mingw-w64-x86_64-gccmsys/gcc の 2 種類のバイナリがあることが確認できます.

MinGW の gcc をインストールする場合は,

pacman -S mingw-w64-x86_64-gcc

MSYS の gcc をインストールする場合は,

pacman -S gcc

とします.

余談ですが,開発環境をまとめてインストールしたい場合は次のグループをインストールすればだいたいのものはそろいます.

  • base-devel - いろんなパッケージのビルド
  • msys2-devel - msys2 パッケージのビルド
  • mingw-w64-i686-toolchain - mingw32 パッケージのビルド
  • mingw-w64-x86_64-toolchain - mingw64 パッケージのビルド

参考

14
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?