Edited at

Windows Subsystem for LinuxでUbuntu

Windows 10をversion 1903にアップグレードするに合わせて、Windows Subsystem for Linux (WSL)のインストール手順についても見直しを行った。Version 1809からは大きな変更はないが、タイムゾーンがインストール時にデフォルトでJSTに設定されるようになっていることから、タイムゾーンの設定を手順から削除した。

作業にあたってはMicrosoftの公式ページを参照。なおMicrosoft Docsの内容はまだ最新バージョン向けに更新されていなかったので、ブログの最新情報も合わせて参照。


Windows Subsystem for Linuxを有効にする

WSLは現在デフォルトで無効になっているのでまず有効化。PowerShellを管理者権限で立ち上げて次のコマンドを実行。

> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

終了すると再起動するか尋ねられるので、"Y"を入力。

この操作を完了するために、今すぐコンピューターを再起動しますか?

[Y] Yes [N] No [?] ヘルプ (既定値は "Y"):

入力すると直ちに再起動されるので、他に開いているものがあれば事前に閉じておく。


Ubuntuのインストール


Ubuntu 18.04ストアアプリのインストール

WSLでは複数のディストリビューションが選択可能だが、後にインストールするアプリケーションの関係でUbuntu 18.04を選択する。Ubuntuインストールするため、再度PowerShellを管理者権限で立ち上げて、次のコマンドを実行。

> Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1804 -OutFile ~/Ubuntu.appx -UseBasicParsing

> Add-AppxPackage -Path ~/Ubuntu.appx

1行目のコマンドでUbuntu 18.04のアプリケーションパッケージがダウンロードされ、2行目のコマンドを実行することでWindowsストアアプリとしてインストールされる。Microsoft DocsではWindowsストアから導入する方法が解説されているが、ブログでPowerShellのコマンドラインで実行する方法が解説されていたので、今回はその方法を実行。コマンドの意味については、Microsoft Technetの解説を参照。


Ubuntuの初期設定

ブログだと、PowerShellから初期設定を続けるやり方で解説されていたが、Ubuntuのターミナルを立ち上げて初期設定を続けることとする。


ユーザ名とパスワードの設定

Ubuntuターミナルの初回起動時にはインストールが継続して実行され、完了後にユーザ名とパスワードの入力が求められるので、適宜入力。

Installing, this may take a few minutes...

Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.


APTパッケージアーカイブを国内サイトに変更

Ubuntuのパッケージアーカイブリポジトリは、既定でarchive.ubuntu.comおよびsecurity.ubuntu.comに存在する。ただこのリポジトリをホストしているサイトは英国に存在し、日本からアクセスするとかなり遅い。そこで日本国内のミラーサーバであるjp.archive.ubuntu.comに変更する。なお、変更するに当たりバックアップをとっておく。

$ sudo sed -i.bak 's/\/archive\.ubuntu/\/jp\.archive\.ubuntu/' /etc/apt/sources.list

このサイト、Ubuntu Desktopなどで日本国内のミラーとして指定される名前だが、公式ページのアーカイブミラー一覧には掲載されていない。

このドメイン名は、Ubuntu Japanese Teamが保守しているubuntutym.u-toyama.ac.jpのエイリアスだとされているが、hostコマンドで確認すると確かにそのとおり。

$ host jp.archive.ubuntu.com

jp.archive.ubuntu.com is an alias for ubuntutym.u-toyama.ac.jp.
ubuntutym.u-toyama.ac.jp is an alias for ubuntutym3.u-toyama.ac.jp.
ubuntutym3.u-toyama.ac.jp has address 160.26.2.187

アーカイブミラーを変更したら、パッケージを更新する。

$ sudo apt update

$ sudo apt upgrade

更新が終了したら、一旦ターミナルを閉じて再度開き直す。


ロケールを日本語に変更

WSLでの利用目的によっては、日本語化する必要がないか、もしかすると日本語化しないほうが良いが、とりあえず使える環境は構築しておく。ロケールの初期設定を確認するとC.UTF-8となっている。

$ locale

LANG=C.UTF-8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_PAPER="C.UTF-8"
LC_NAME="C.UTF-8"
LC_ADDRESS="C.UTF-8"
LC_TELEPHONE="C.UTF-8"
LC_MEASUREMENT="C.UTF-8"
LC_IDENTIFICATION="C.UTF-8"
LC_ALL=

また、言語パックを追加しないでも設定可能なロケールは次の通り。

$ locale -a

C
C.UTF-8
POSIX
en_US.utf8

初期設定では日本語は選択できないので、日本語の言語パックをインストールする。

$ sudo apt install language-pack-ja

言語パックをインストール後、ロケールとしてja_JP.utf8が設定可能になったことが確認できる。

$ locale -a

C
C.UTF-8
POSIX
en_US.utf8
ja_JP.utf8

次にデフォルトのロケールをja_JP.UTF-8に変更する。

$ sudo update-locale LANG=ja_JP.UTF-8

ターミナルを一旦閉じて、再度開いてからロケールが変更されたことを確認する。

$ locale

LANG=ja_JP.UTF-8
LANGUAGE=
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"

これで日本語を使うための最低限の設定が完了したが、WSLの利用形態を考慮すると、メッセージは英語のままのほうが都合がよい。そこでデフォルトのロケールをen_US.utf8に設定して、必要に応じてja_JP.UTF-8に切り替えることにする。

$ sudo update-locale LANG=en_US.UTF8