windowsの端末ソフト・UNIXライクな環境とパッケージ管理ソフトについて


WindowsでUn*xライクな環境を使いたい。

以前からCygwin、MsysDTK+Mingw、Gnupackと使ってきましたが、
Windows10プリインストールのPCを購入したのを気に、環境を一新しようと考えました。
迷走し始めたので整理するためにもメモします。(リンクの張り替えや体裁はぼちぼちあとで整えます。)

導入するプロダクトとバンドルされている機能や製品群の表

端末ソフト主体のものやUn*x環境を主目的にしたものなど、同じレイヤーに限らず
セットアップ途上の組み合わせのメインになりそうなものを記載してみています。

プロダクト 主体となるソフト 端末ソフト シェル パッケージ管理 Unix系コマンド クライアントソフトなど
git for windows git mintty bash ? msys2のfork sshやscpなど
msys2 Un*x的な環境 mintty bash pacman msys2(cygwinから派生) sshやscpなど
cygwin Un*x的な環境 mintty bash apt-cyg cygwin(GNUのパッケージをWindows向けに) sshやscpなど
cmder 端末ソフト cmder clink他 ? msys2由来(git for windowsを含むため) sshやscpなど
MobaXterm 端末ソフト mobaxterm busybox MobApt busybox,cygwin sshやscp、Xサーバ、FTP,moshクライアントなど多数
chocolatey パッケージマネージャ cmderなどをインストール可能 - chocolatey gow,cygwinなどインストール可能 sshやscpなど
Scoop パッケージマネージャ cmderなどをインストール可能 - scoop gow,cygwinなどインストール可能 sshやscpなど
Babun Un*x的な環境 mintty zshやbash pact gow,cygwinなどインストール可能 sshやscpなど
BashOnWindows Windows Subsystem for LinuxとUbuntu環境 要確認 bash apt ubuntuそのもののコマンドやライブラリをAPI変換で実行 本来の目的かわからないが結構なんでも

現状

現状は、今後どうするか迷走してこの記事に記載しています。
2016年8月3日現在、BashOnWindowsを試用してみたいと思っているところです。
※おすすめのコメントや編集リクエスト歓迎します。

現状の更新及び個人的な進捗は末尾に移動します。


個別の感想

git for windows

gitを使わないときに現在のリポジトリの表示のためだけにgitが起動して引っかかったりパッケージ管理が気になったので使わなくなった。少し手直しして、MinGWと組み合わせれば有望かも。

参考になる記事


msys2

MSYS2 is an independent rewrite of MSYS, based on modern Cygwin (POSIX compatibility layer) and MinGW-w64 with the aim of better interoperability with native Windows software.

後述のcygwinの派生形。プロセスなどのエミュレーション部分を少なくしてミニマルな構成。
mingwのお供として開発されたような記憶がある。

参考になる記事


cygwin

a large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows.

なんどか試したことが有ったのだけれど、パフォーマンスがきついのとWindows環境との
親和性が少なめなことから、敬遠しがち。BabunやGnupack経由で導入することも検討。
apt-cygで更新をするのですが、ただいまお家騒動?中のようです。
個人的にはこういうお家騒動があってもパッケージングされている元のソフトウェアが
オープンソースなんで、そのうち何とかなるのではと、楽観的に考えています。
でも実際とりあえず、生Cygwinを避ける程度のインパクトはありました。

apt-cygお家騒動?関連
apt-cygのGitHubレポジトリが閉鎖されてる
apt-cygを奪い去ろうとしたsageをMITライセンス違反だとして元に戻そうとしてるレポジトリがあった

参考になる記事


cmder

cmder is software package that provides great console experience even on Windows.

ConEmu(Terminal)にClink(シェル)、やgit for windowsなどをいろいろ組み合わせたソフト。msysやgit for windowsの単独インストール済みであれば検知して簡単にシェルのリストに追加できる。プレーンぽいbashきちんと動くように設定できなかった。

参考になる記事


MobaXterm

Enhanced terminal for Windows with X11 server, tabbed SSH client, network tools and much more

Xサーバやmoshクライアントや、SFTPやRDPのセッション管理など高機能。
パッケージマネージャとUn*x系コマンドも実装されているけれど、パッと見日本語の
インライン入力が苦手っぽい。

参考になる記事


chocolatey

Chocolatey NuGet is a Machine Package Manager, somewhat like apt-get, but built with Windows in mind.

本来パッケージマネージャなので同列に語るべきではないと思うけれど、
これで必要なパッケージをほとんど賄っている人もいるので気になってます。


Scoop

Cmder is a software package created out of pure frustration over the absence of nice console emulators on Windows.

これもパッケージマネージャ。chocolateyと比べるとインストール先がちらばらずに、バージョンアップも速い傾向があるみたい。結構シンプル

参考になる記事


Babun

a windows shell you will love

GnupackのようなCygwinをリパッケージしたもの。
結構Linuxチックに動くように見えて気になっているところです。

参考になる記事


BashOnWindows

Bash on Ubuntu on Windows.

2016年8月2日のアップデートで一般向けにも実装された。
Windows10用のSubSystem。Interix~Services for UNIXの系譜としてLinuxAPIに見せかける層やELFローダ等組み合わせ、LinuxサブシステムUbuntuのユーザランドをくっつけたもの。
実際には、以前から言及しているものの代わりにはならないケースも多いとおもう。
(Windows10必須なことや純正だけれど、Windowsとの相互運用性が低いことなど。)
個人的には、だいぶ期待してます。

参考になる記事


総合的な参考になる記事
※2016/03/08 コメントを追記し始めました。
上記のソリューション他を組み合わせてどう利用されているのかや
試行錯誤やバリエーションを記載されている記事です。
私自身もこの方々のどれかを元に構築しようかと思いましたが、
結局、なんらか自分好みの状況にならない感じがして迷走しています。

  • Windowsで使えるターミナルとシェルのまとめ
    すごくよくまとめられていて、ターミナルとシェルの話題であれば、
    私のこの記事は不要だと思います。
    自分の記事の場合、Scoopchocolateyをベースにする可能性やBabunなども検討している過程のメモと紹介の意味もあったのですが、最近、更新されたタイミングでWindowsで使えるターミナルとシェルのまとめを見返してみると、すごくためになります。
    内容を知りたい方は、このまとめを見ていただく方が良いかと。
    最終的にはこのまとめでは、MSYS2 + ConEmu (+Mingw)という感じで仕上げる例を最後に挙げられています。
    CocotやWinptyの話題や各プロダクトの印象など包括的にケアされています。

  • gnupack(Cygwin) + oh-my-zsh + tmuxの環境を構築する
    私も職場で使っているcygwin gnupackをベースにzshとtmuxを調整されている記事です。Shellにzshとターミナルマルチプレクサにtmuxを利用する前提で、ConEmu⇒MobaXterm⇒Babun⇒cygwin純正⇒gnupackといろいろ試された経緯も記載されています。フォント、カラースキーム、tmux、zshを設定していく手順も記載されています。
    この方が言われている、
    ベストな環境とは思わないのですが、まぁ妥協できる環境かなというところで落ち着いてます。 まぁ…最近いろいろ調べてみて、Windowsでベストなターミナル環境は相当難しいと思っていて、 逆の考え方で、ここまで実現できるのであれば十分だろうという結論に至ってます。
    というのはよく理解できますし、私も自分が納得できる環境が無いかと思っているところです。

  • Windowsでかっくいいターミナルが使いたい!
    ConEmu⇒Babunと試されています。文字化け対策でCocotや、フォントやエイリアスの話題もあります。

現状の更新及び個人的な進捗

vimとsshクライアントとちょっとbashでスクリプトが組めて、mingwでコンパイルなどできて、WindowsのPython環境を使えればあとは、仮想マシンで小さなLinux環境を持つつもりで始めました。

cmder fullを試してみた結果、メニュー等がやたら高機能だったり、軽めで満足いくshellを設定しきらず(自分の問題ですね)別のものを試したくなりました。
そしてgit for windwosを試すけれど、これはcmder full同様パッケージマネージャが見当たらなかったため、別のものを試そうと思い、
今現在MobaXtermの見た目を抑え気味にして試してみたところです。日本語がきちんとできれば有望かも。
msys2とcygwinはリパッケージしたようなものがいくつかあるのでそちらを先に試そうと思っています。

現状の追記

~記事記入時点
Gnupackが少し気になる(自分の直感と異なる)ところがあるものの結構よく使えていたので、babunが(別の選択肢として)気になっています。

追記~2016年3月初旬までの進捗

その後、Windows10のPC(2in1的なタブレット)のWindows回復ドライブと
イメージバックアップを2式作るために一旦全てアンインストールしました。
イメージ化が済んだ後に、Scoopを導入、Scoopmsys2で管理することを
考えていたところですが、Scoop自身をUpdateする際にgit for windowsが入って、そこにmsys2ベースのコマンドやminttyが入っているので
いろいろ足りないけれど、ここにMingwと、Windows版のPythonを入れるか迷っているところです。
MingwをScoop経由で入れるのか迷っています。直接入れた方がよいのかとか。あと、git for windowsにはSDKがあり、それを入れるとmsys2のパッケージが追加されるっぽい。

実際のところこのPCは趣味の開発PCだったはずのものですが、最近はクラウド側に環境を持つ方が良いのではないかとも思い、ますます微妙な感じです。
少し別の話題ですが、Google Cloud Shellと、IDCFクラウド、CONOHA VPSを試してみています。まとめ記事的には、エディタ(vim/emacs)を中心とした環境作りをつけるか考えています。

追記~2016年6月末までの進捗

Scoop経由で、git for windowsを入れた状態のまま。です。
BashOnWindows待ちともいえます。同様に以前からあるもう一台は、Gnupack(Cygwin)のままです。本題とそれますが、開発環境としては、VagrantからローカルのVirtualboxやConohaを使うときだけ起動しているほか、IDCFクラウドも常用しています。
MobaXterm、cmderは少し試用してみましたがデフォルトで私の直観との差が少し大きいので当面他のものを利用してみようと考えています。