Windows Subsystem for Linuxで開発環境を整えた

ndenv とか pyenv とか rbenv とか tmux とか fish とか neovim とか fzf とか色々動いたし、True Color出せるということもわかったので、まぁ常用はできるんじゃないですかね?といった所。常用するかどうかは知らん。まだ課題点もいろいろあるし。

導入

WSLチュートリアルがあるので これ通りやった。 https://github.com/QMonkey/wsl-tutorial

XWindowSystemが必要なアプリケーションを使う予定がないならXLaunch入れたりとかはしなくていいとは思う

あとは普通のUbuntuなので必要なアプリケーションをインストールしていくだけ。

僕の環境は多分大体以下のコマンドで再現できると思う

sudo apt-get install software-properties-common
sudo apt-add-repository ppa:fish-shell/release-2
sudo add-apt-repository ppa:neovim-ppa/unstable
sudo apt-get update && sudo apt-get install neovim fish tmux go git build-essential openssl libssl-dev libbz2-dev libreadline-dev libsqlite-dev gcc python-build

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
git clone https://github.com/riywo/ndenv ~/.ndenv
git clone https://github.com/riywo/node-build.git ~/.ndenv/plugins/node-build
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

惰性で各envそれぞれインストールしてるけどanyenvとか使う方が絶対筋いいのでそっちにしような

はまったこと

pecoが動かん

pecoのLinuxビルド持ってきて叩いてみたら

Failed to execute process '/usr/bin/peco'. Reason:
exec: Exec format error
The file '/usr/bin/peco' is marked as an executable but could not be run by the operating system.

pecoにPR投げるのが得策なのはそれはそうなんですけど、時間もなければGoがわからないので普通に迂回してfzfで代替することにした。tmux連携とかvim連携あるらしくてこっちの方がいいかも感出てきた。

ちなみに僕の場合はpeco -> fzfは fzfをインストールして peco使うコードが書いてあるファイルで :%s/peco/fzf-tmux/g しただけで移行終了した。よかった

systemd動いてはいるけど様子がおかしい

systemctl status acpid.service とか叩いてみると

Failed to get properties: Launch helper exited with unknown return code 1

になる。 WSLはGitHubがあるので issue見てたら見つけた

https://github.com/Microsoft/WSL/issues/1579

service使おねということらしい

chsh見てくれない

これ本当に最悪なんですけどWSLちゃんはなんかchsh効きません。僕は 泣く泣く .bashrcfish && exitを書きました

** 追記 **

exec fish にするとbashのプロセスが置き変わるので便利らしいですね

ターミナルエミュレータどうするよ問題

Windowsは残念なことにまともなターミナルエミュレータが存在しないと思い込んでたが、https://github.com/goreliu/wsl-terminal が比較的まともっぽいので入れた。これがなかったら正直WSLで開発とかしようと思わなかったと思う。

導入法はWSL側のUsername と Passwordの設定が終わった段階で bash -c "wget https://github.com/goreliu/wsl-terminal/releases/download/v0.8.7/wsl-terminal-0.8.7.7z && 7z x wsl-terminal-0.8.7.7z" をするだけ。あとはスタートメニューに、 Ubuntu Terminalが召喚されるので、そいつを起動するだけ。右クリック -> Optionsで色々弄れるので下のようにしとくとよい

総括

常用できるWSL環境を整えられたということがわかる。

WSLのUbuntuの挙動はかなり癖があるが、まぁ普通にLinux使ってきた皆さんならあんまり問題にならないよねといった物ばかりなのでこれを期に開発マシンでUbuntuとか使ってた人たちはWSL試してみては?

かなりサクッと導入できて便利なんですけどプログラミング初心者とかにとりあえずWSL入れてねって勧められる程の出来ではない感じだと思った。

課題点

  • Windows + tmuxでのクリップボード共有設定について煮つめられていない。 -> 続編
  • 職場のWindowsマシンマンがvagrantで作業しているのがしんどそうなので導入してもらいたい -> 手オペレーションは日本語を書かなくちゃでしんどいのでMitamaeとか使ってバンドカバンで入るようにしたい
  • Docker動くのかこれ…?