Windows Subsystem for Linuxで開発環境を整えた
Posted
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効きません。僕は 泣く泣く .bashrc
に fish && 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動くのかこれ…?