14
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated 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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
14
Help us understand the problem. What are the problem?