WLinux を Windows 10 で使う最小手順

WSL (Windows Subsystem for Linux) 向け Linux ディストリビューションである "WLinux" に [RHEL ベースの "WLinux Enterprise" が登場](https://news.mynavi.jp/article/20181218-742626/)しました。

これを機に WLinux を使うようにしてみたので セットアップ Tips を紹介します。

**2019年11月 更新**

WLinux の後継である Pengwin について記載しました。 → [WSL向けディストリビューション "Pengwin" を Windows 10 で使う最小手順](https://qiita.com/ma2shita/items/5332822c80a367c93a08)

## TL;DR

* Windows Store から WLinux をインストール
* `$ sudo apt install -y libssl-dev libreadline-dev zlib1g-dev` (Ruby を入れる場合)
* `$ wlinux-setup`
* 気に入ったら `CMD> wslconfig /s WLinux` で規定のディストリビューションにする

注意：有料ですからお気を付けください。

以上です。

## WLinux のインストール

WLinux もしくは WLinux Enterprise それぞれ Microsoft Store からのインストールになります。 `wlinux` で検索すれば見つかるはずです。

今回私が使うのは WLinux の方です。後述しますが、それぞれベースディストリビューションが異なり、個人的には Debian 由来の apt 等、慣れ親しんでいるからという一点で WLinux を選んでいます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/22754/c71ff397-e035-2347-6a13-7874f0d61fc6.png)

### インストール先

Windows 上では `C:\Users\YOU\AppData\Local\Packages\WhitewaterFoundryLtd.Co.**\` に入ります。
rootfs はこのディレクトリの下の `LocalState\rootfs\` です。

ちなみに Ubuntu 18.04 なら `C:\Users\ma2sh\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_**` に入ります。

まあここを直接いじることは無いと思いますが、覚えておいて損はありませんので掲載しておきます。

### WLinux と WLinux Enterprise はベースディストリビューションが異なる

* WLinux は 2018年9月にローンチした、Debian ベースのディストリビューション
    * パッケージ管理は apt
* WLinux Enterprise は 2018年12月にローンチした、RHEL (RedHat Enterprise Linux) ベースのディストリビューション
    * パッケージ管理は yum

出典: [WhitewaterFoundry/WLinux](https://github.com/WhitewaterFoundry/WLinux)、[Winodws 10にRHEL互換の新しいLinux「WLinux Enterprise」登場](https://news.mynavi.jp/article/20181218-742626/)

## wlinux-setup コマンド

WLinux のインストール後に LANG やスクリプト系言語のセットアップだけでなく、特定のディレクトリをカレントにして起動できるシェル拡張 "Open with WLinux" をインストールしてくれる、対話形式のセットアッパーです。

```
$ wlinux-setup
```

以下のようなダイアログが表示されます。ぽちぽちと選択して [OK] すれば、それにあった環境がインストールされるというものです。

![wlinux-setup.png](https://qiita-image-store.s3.amazonaws.com/0/22754/b52f6a57-5edb-93cb-c331-31ba9c42814a.png)

* LANGUAGE: LANG 設定をします。 `ja_JP.UTF8` とか入れたければここからです。
* EXPLROER: 右クリックで "Open with WLinux" を開いてくれるシェル拡張のインストールです。
* SHELLS: WLinux は bash が標準ですが、それ以外の csh 等入れたいときはどうぞ。
* EDITORS: 試してません、ゴメンナサイ。私は Windows 側で VScode 使うんで。
* PYTHONPI: Python 3.7 をインストールしてくれます。pipも入ります。
* NODEJS: 最新の Node.js と npm を入れてくれます。
* GO: 試してません、ゴメンナサイ。たぶん最新の golang が入ります。
* RUBY: rbenv を使って Ruby をインストールしてくれます...が！[事前準備が必要ですのでご注意](#ruby)
* DOTNET: 試してません、ゴメンナサイ。
* JAVA: 試し(ry
* POWERSHELL: 試し(ry
* GUI: 試し(ry
* DOCKER: Windows 側で動かしている Docker daemon (Docker for Windows) と通信できるようにしてくれます。ですのでインストールされるのは `docker` コマンドだけですのでご注意を。
* CASSANDRA: 試してません。なぜこの並びに入るのか、ちょっとよくわかりません。

### PYTHONPI で install される Python 3.7 with PyPi の運用;

`pip` は `~/.local/bin/pip` にインストールされます。即ち `pip` を実行する際には `--user` を付けましょうという事です。
もちろん `python3 -m venv DIR` と venv を使って運用することも可能です。

```console:例
$ pip install --user awscli
```

単純に `pip install` してしまうと `/usr/local/*` に配置しようと試みますが失敗します。
また `sudo pip` は環境変数 PATH に `~/.local/bin` が標準では含まれないので system-wide に入れるならひと手間 (`/etc/sudoers` を編集)する必要があります。

<h3 id="ruby">RUBY / rbenv を使った Ruby の install;</h3>

WLinux インストール直後で wlinux-setup から RUBY を選んでも失敗します。
失敗時の `/tmp/ruby-build.*.log` を見てみると、必要な extension の build に失敗しているためです。

そのため `sudo apt install -y libssl-dev libreadline-dev zlib1g-dev` で必要なライブラリをインストールしてから改めて RUBY のインストールをしましょう。

失敗の様子;

```:/tmp/ruby-build.*.log
installing capi-docs:               /home/ma2shita/.rbenv/versions/2.5.3/share/doc/ruby
The Ruby openssl extension was not compiled.
The Ruby readline extension was not compiled.
The Ruby zlib extension was not compiled.
ERROR: Ruby install aborted due to missing extensions
Try running `apt-get install -y libssl-dev libreadline-dev zlib1g-dev` to fetch missing dependencies.
```

apt で入れた後で改めて `wlinux-setup` からインストールしようとすると、以下のように不吉な文言が表示されますが、気にしないで行きましょう。
(理由は [このへん](https://github.com/WhitewaterFoundry/WLinux/blob/master/linux_files/setup#L591))

```
以下のパッケージには満たせない依存関係があります:
 libcurl4-openssl-dev : 競合: libssl1.0-dev しかし、1.0.2q-2 はインストールされようとしています
 libssl-dev : 競合: libssl1.0-dev しかし、1.0.2q-2 はインストールされようとしています
 libssl1.0-dev : 競合: libssl-dev しかし、1.1.1a-1 はインストールされようとしています
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。
```

## 気に入ったら既定にしませう

cmd.exe から `wslconfig` で既定のディストリビューションが設定できます

```cmd
>wslconfig  /l
Windows Subsystem for Linux ディストリビューション:
Ubuntu-18.04 (既定)
WLinux

>wslconfig /s WLinux

>wslconfig  /l
Windows Subsystem for Linux ディストリビューション:
WLinux (既定)
Ubuntu-18.04
```

## あとがき

Just do it!

EoT