へっぽこびんぼう野郎のnewbie日記

けろけーろ(´・ω・`)!

Windowsとか全然知らない初心者だけど、Bash on Windows入れて環境構築してみた

なぜWindows使うのか

Macが壊れる
→修理に出す(1週間)
→なおってない
→修理に出す←いまここ

そうだ! Windowsを使ってみよう!

bash.exeを実行するまで

なにはともあれここから。
Bash on Windowsな生活を送るためにはbash.exeを実行する必要がある。

とりあえずWindows Updateする。
Update後にアニバーサリーアップデートを入れる。このアップデートの中にbash.exeが入っている
How to get the Windows 10 Anniversary Update | Windows Experience Blog

アップデート後に、cmd.exeを立ち上げ、bashと打つと、bashがインストールされる(`・ω・´)
やったね!
Bash on Ubuntu on Windows - Installation Guide


おわり・・・ではなかった。
長く険しい戦いがいま、はじまる。

Ubuntuのレポジトリが古すぎるので新しくする

Bash on Windowsのレポジトリはtrusty(14.04)
現在の最新はyakkety(16.10)なのだが、ぼくはxenial(16.04)で入れた。ロングタームリリースだし・・・

f:id:haruharu1:20161017201302p:plain

この後、sudo apt-get update
upgradeは時間かかるのでぼくは下記のやつがぜんぶ終わってからやった

参考:
Configuration

日本語がひどいのをなんとかする

ターミナルエミュレータがcmd.exeだと、bashの中に入ったときに日本語が打てない → しんどい
別のターミナルエミュレータをインストールしてみることに

この記事を参考に
Bash on Windows + cmderでまともなターミナルを獲得する(tmuxに関する追記有り) - Qiita
cmder.exeとかいうのを入れてみよう!
と思ったのだが、vimで日本語がずれたので却下

msys2とかいうものが便利らしいということを知る。
でもそもそもmsys2とかMinGWとかCygwinとかminttyとかよくわからなかったので調べる
このへんとか見てみた
MSYS2で快適なターミナル生活 - Qiita

MinGWっていうのは、GNUのツールたちのことで、msys2はシェル
minttyはターミナルエミュレータで、Cygwinはターミナルエミュレータ+シェルみたいな感じだと理解した(違ったらおしえてください)

いい感じの記事を公開してくださっていたので、これのとおりにブリッジ的なソフトをインストールする
Big Sky :: Bash on Ubuntu on Windows の最高の端末環境を教えてやるからちょっと来い。

書いてあることをそのまままとめると

msys2側でfrontendディレクトリに行き、makeコマンドでビルド
bash.exeでbackendディレクトリに行き、makeコマンドでビルド

ビルドするために必要なmakeやg++は最初から入っていないのであらかじめ、
msys2では
pacman install make gcc
(うろおぼえ)

bash.exeでは
sudo apt-get install make g++
しておく

あとはショートカットを作って
C:\msys64\usr\bin\mintty.exe -t "Bash on Ubuntu on Windows" -e c:/msys64/dev/wslbridge/out/wslbridge.exe

みたいな感じにする。

c:/msys64/dev/下においてるけど、別にここでビルドしなくてもいい

こうすると、日本語が普通に使える。ありがとう!ありがとう!
f:id:haruharu1:20161017201504p:plain
f:id:haruharu1:20161017201550p:plain
f:id:haruharu1:20161017201629p:plain

vimクリップボードwindows側と共有できない問題をなんとかする

いろんな方法があるらしいのだが、Xmingをインストールすることで解決した
How to copy text from vim to system clipboard? · Issue #892 · Microsoft/BashOnWindows · GitHub

試してないけど、デフォルトのvimクリップボードフラグがオフになっているので
sudo apt-get install vim-gtkして、クリップボードおっけーのやつをつかった

ちゃんと、export DISPLAY=:0を.bashrcとかに書くことを忘れないこと(忘れた)

Vagrantインストールできない問題をなんとかする

結論からいうとVirtualBoxがインストールできないのでインストールできない。
VirtualBoxが、カーネルの深いところまで探っているらしく、それWindowsで再現できないYo!とのこと。
Can't find kernel headers for 3.4.0 · Issue #549 · Microsoft/BashOnWindows · GitHub


なのでwindowsvagrantBash on Windows上で使うことにした。
cbwinとかいう神ツールがあった。
GitHub - xilun/cbwin: Launch Windows programs from "Bash on Ubuntu on Windows" (WSL)

outbash.exeを実行すると、cmd.exe上でbashが立ち上がり、なんか内部でなんかのポートを使ってなんやかんやするとこができるらしい。
ディレクトリが/mnt/c以下で、wrun notepadとか打つと、Windowsアプリを立ち上げることができーる

outbash.exeってやったあと、OUTBASH_PORTとかいう環境変数ができているので、そのポート番号があれば、他のターミナルでも同じようにwrun notepadとかできて便利
くわしくはcbwinのドキュメント読んでください

f:id:haruharu1:20161017202548p:plain
f:id:haruharu1:20161017202641p:plain

毎回これ設定するのめんどくさいから、楽にしようと思ってcbwinのソースを見て、まぁとりあえずあとで考えることにした。

ついでにzshも入れてる

Ubuntuっぽい!!!

おわりに

ひとまずこれでまともに開発できるんじゃないかなと思っている
Windowsがんばるぞ!

追記

Ansibleでぶじ死亡した(´・ω・`)
Macがなおったので今はMacを使っている