Windows 10をversion 1903にアップグレードするに合わせて、Windows Subsystem for Linux (WSL)のインストール手順についても見直しを行った。Version 1809からは大きな変更はないが、タイムゾーンがインストール時にデフォルトでJSTに設定されるようになっていることから、タイムゾーンの設定を手順から削除した。
作業にあたってはMicrosoftの公式ページを参照。なおMicrosoft Docsの内容はまだ最新バージョン向けに更新されていなかったので、ブログの最新情報も合わせて参照。
- Windows Subsystem for Linux Installation Guide for Windows 10 (Microsoft Docs)
- What’s New for WSL in the Windows 10 October 2018 Update (Windows Command Line Tools For Developers)
- What’s new for WSL in Windows 10 version 1903? (Windows Command Line Tools For Developers)
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