Windows Subsystem for Linux (WSL1) をインストールしてみよう！

# はじめに
日本時間の8月3日から提供が開始されたWindows 10のAnniversary Updateで、ついにBashがやってきました。

これでいろいろなストレスから解放されるはず。さっそくインストールして、使ってみましょう！

> 2017/11/02追記
> Windows 10 Fall Creators Updateにおいてインストール作業が簡略化されました。
> また、名称も「Bash on Ubuntu on Windows」から「Windows Subsystem for Linux」に変更されています。
> 旧バージョンをお使いの方にもわかるようにその都度注釈を入れていきます。

# インストール

## 機能の有効化
まず、Windows側でLinux Subsystemを有効化する必要がありあす。

スタートボタンを右クリックして、`アプリと機能`をクリックします。

![app_and_feature.png](https://qiita-image-store.s3.amazonaws.com/0/53168/3fb2a7fe-1c27-024e-8a58-6dff8b4e7d90.png)

さらに、右上にある`プログラムと機能`をクリックします。

![program_and_feature.png](https://qiita-image-store.s3.amazonaws.com/0/53168/8e71f377-bdea-d7c8-1621-e98e5736668a.png)

左側の一覧から、`Windowsの機能の有効化または無効化`をクリックします。

![ubuntu02.png](https://qiita-image-store.s3.amazonaws.com/0/53168/713d8416-9d54-8725-f0fe-4ab3285da092.png)

`Windows Subsystem for Linux (Beta)`を探し、チェックを入れます。

> 注意) Fall Creators Updateでは`Beta`が取れています。

![ubuntu03.png](https://qiita-image-store.s3.amazonaws.com/0/53168/727b8502-e1c7-b71d-847d-79cdf4aa6dad.png)

インストールが始まるので、終わるまで待ちます。終わったら再起動してください。

![ubuntu04.png](https://qiita-image-store.s3.amazonaws.com/0/53168/5966af36-285b-16dc-a4a4-a3d95d04f117.png)

![ubuntu05.png](https://qiita-image-store.s3.amazonaws.com/0/53168/7cfd6f5c-cc93-7659-13c9-217beb6e51fa.png)

## 開発者モードの有効化 (Fall Creators Updateでは不要)

再起動したらスタートメニューから「設定」→「更新とセキュリティ」と進み、
左側のメニューから`開発者向け`を選択して`開発者モード`にチェックを入れます。

![ubuntu06.png](https://qiita-image-store.s3.amazonaws.com/0/53168/f5e4a40c-19a8-fdd9-b371-f44eb13749c0.png)

注意書が出ますが、そのまま進めましょう。

![ubuntu07.png](https://qiita-image-store.s3.amazonaws.com/0/53168/59a42a12-3a8a-1ed8-fbba-6c8d1b07b1d2.png)

## bashのインストール (Fall Creators Update以降)

### 古いWSL環境の削除
もしCreators Update等から環境を引き継いでいる場合、安全のために古いWSL環境を削除しておきます。

まずコマンドプロンプトまたはPowerShellを開き、次のコマンドを入力して削除します。
このとき全てのデータが消えますので、必要なデータはバックアップを取得してから行ってください。
以下に実行例を示します。

```bat
> lxrun /uninstall
警告: lxrun.exe は、Linux ディストリビューションのためにレガシ Windows サブシステムを構成するだけに使用されます。
ディストリビューションは次の Windows ストアを訪問してインストールすることができます:
https://aka.ms/wslstore

これにより Windows 上の Ubuntu がアンインストールされます。
Ubuntu 環境および次の項目を除くすべての変更内容と新しいアプリケーションが削除されます。

C:\Users\USERNAME\AppData\Local\lxss\home
C:\Users\USERNAME\AppData\Local\lxss
oot

続行するには、"y" を入力してください: y
アンインストールしています...
```

### ストアからWSLをインストール
続いて`Microsoft Store`をスタートから探して開きます。
そして、右上の検索窓でUbuntuと検索します。

![wsl04.PNG](https://qiita-image-store.s3.amazonaws.com/0/53168/67206d3a-3c23-9cfe-1f0b-010e50de0b2b.png)

検索に引っかかってきた`Ubuntu`をクリックします。

![wsl05.PNG](https://qiita-image-store.s3.amazonaws.com/0/53168/62da387d-459c-eeb8-5b10-977557effb7f.png)

最後に`入手`ボタンをクリックします。

![wsl06.PNG](https://qiita-image-store.s3.amazonaws.com/0/53168/e450f5e5-cc1e-8c94-0767-a07167a0a8c9.png)

インストール作業が終わったら、スタートに追加される`Ubuntu`を起動して、インストールの完了を待ちます。
完了すると、内部で使用するユーザー名とパスワードの設定を求められるので、プロンプトに従って入力します。
なお、パスワードは入力しても表示されませんので、正確に入力してください。

![wsl07.PNG](https://qiita-image-store.s3.amazonaws.com/0/53168/9576cddb-ce0d-4459-32c4-855f70abd341.png)


# 初期設定
このままではちょっと不便なところがあるので、さくっと初期設定してしまいます。

## リポジトリの変更
デフォルトでは海外サーバーにリポジトリのデータを取りに行ってしまいます。
これだと通信速度が遅くなってしまうので、日本のサーバーに切り替えます。
次のコマンドを入力して、切り替えてください。

```shell-session
sudo sed -i -e 's%http://.*.ubuntu.com%http://ftp.jaist.ac.jp/pub/Linux%g' /etc/apt/sources.list
```

## パッケージのアップデート
あくまでLinuxが乗っかっているので、パッケージのアップデートも日々行ってください。
コマンドはいつも通りですが、紹介します。

```shell-session
sudo apt update
sudo apt upgrade
```

# 諸注意
まだ若干不安定で、aptコマンドの進捗バーがちらついたりなど
色々おかしくなることがありますが、温かい目で見守っていきましょう。

たまに描画がストップして、固まったようになってしまうことがありますが、
こうなった場合は一度Enterキーを押してあげると治りますので試してみてください。

それではLinuxな世界を、楽しみましょう！

# アンインストール
なんか環境がぐちゃぐちゃになってやり直したくなったら以下の通りにすると再インストールできます。
管理者権限でcmdを立ち上げて実行してください。

```bat
lxrun /uninstall /full
lxrun /install
```

# 試してみたもの
色々インストールして動かしてみましたが、これぐらいは使えそうだったと言うことを紹介いたします。

## Vim
言わずもがな。

```shell-session
sudo apt install vim-nox
```

## Git
これもOK

```shell-session
sudo apt install git
```

## wget/curl
デフォルトでインストールされていました。バッチリ動作。

## LaTeX
意外と大丈夫だった。途中で失敗したりしたけど、
もう一回同じコマンドを入力したらちゃんとインストールできた。
(ちょっと怖い)

```shell-session
sudo apt install texlive-full
```

## GCC
これがやりたかったんですよ～

```shell-session
sudo apt install build-essential
```

## zsh
Win10 1804からは`chsh`もきちんと有効になりました。

```shell-session
sudo apt install zsh zsh-syntax-highlighting
chsh -s /bin/zsh
```

## pyenv(anyenv)
中途半端に日本語化していたせいでこけてしまった。
localeを編集して適用すればOK。
anyenvとpyenvのインストールは省略。
ただしログインに時間がかかるようになるので注意。

```shell-session
sudo vim /etc/locale.gen
(ja_JP.UTF-8のコメントを外す)
sudo locale-gen
pyenv install 3.5.2
```

## GHC(Haskell)
Creators Updateにて動作することを確認。
しかしghcやghciやrunghcの起動にいちいち2分ぐらいかかる。
起動してしまえばそれなりの速度で動くことは確認出来た。

```shell-session
sudo apt install ghc
```

## Java
OpenJDKを使いましょう。Ubuntu18.04の場合は以下のコマンドでOkです。

```bash
$ sudo apt install openjdk-11-jdk
```

## Scala
Creators UpdateでJava(というかJVM)が動くようになったので入れてみた。
あっさり動作してしまった。

---

また確認できたら追記します。