WSL(Windows Subsystem for Linux)とは
WSL(Windows Subsystem for Linux)とは、Windows上でLinuxライクにコマンドを実行できる機能です。
Windowsでもbashを使いたい!
そういった人にオススメです。
なお、brewを使うためにはこのWSLの導入が必須なため、もし「WSLを使いたくない」という人がいれば、chocolateyなどの別のパッケージマネージャを検討ください。
環境
- Windows 10 バージョン1903
- 最初はバージョン1803でやってましたが、いくつか不具合が見られたのでバージョンアップ
- https://github.com/Microsoft/WSL/issues/3158 など
WSLのインストール
もともと、コマンドからの手段として用意されていたlxrun
を利用しようとしている方は、1803以降で廃止されているためご注意ください。
WSLを有効にする
Windowsの左下にある検索窓で、「Windowsの機能」と入力し、検索結果に出てくる「Windowsの機能の有効化または無効化」を選択してください。
「Windows Subsystem for Linux」を探し、チェックボックスにチェックを入れてください。
インストールが開始され、終了すると再起動を促されるため、再起動してください。
ストアからUbuntuをインストールする
再起動後、Windowsの左下にある検索窓で、「ストア」と入力し、検索結果に出てくる「Microsoft Store」を選択してください。
Microsoft Storeの右上にある検索窓で、「ubuntu」と検索してください。
すると、3つのubuntuが出てきます。
この違いは以下の通りです。
名前 | 説明 |
---|---|
Ubuntu | 最新のUbuntu LTSで、新しいバージョンが出るたびに更新される |
Ubuntu 18.04 LTS | バージョン18.04のUbuntu LTS |
Ubuntu 16.04 LTS | バージョン16.04のUbuntu LTS |
今回はUbuntu 18.04 LTSを選択します。
「入手」を押して、Ubuntuをインストールしてください。
なお、サインインが求められても、キャンセルすればインストールが始まります。
Ubuntuを起動する
インストールが完了したら、ストアかWindowsの検索窓からUbuntuを起動してください。
起動後、自動でセットアップが開始され、終了するとユーザー名とパスワードの入力が求められます。
好きなユーザー名とパスワードを入力してください。
(今後のUbuntuでのログインに使います)
ユーザーの作成ができない時
adduser: Please enter a username matching the regular expression configured
via the NAME_REGEX[_SYSTEM] configuration variable. Use the `--force-badname'
option to relax this check or reconfigure NAME_REGEX.
と言われ、ユーザー名の入力ができない時があります。
これは、使える文字が^[a-z][-a-z0-9_]*\$
となっており、大文字やドットが使えないからになります。
もし、どうしても使えない文字を使いたい場合、一旦Ubuntuを閉じて、再度起動してください。
すると、コマンドが打てるようになっているので、以下のコマンドを入力ください。
adduser --force-badname <お好きなユーザー名>
これで、好みのユーザー名で作成できます。
なお、この後にEnter the new value, or press ENTER for the default
と言われ、個人情報を入力するか尋ねられますが、全てEnterキーで大丈夫です。
(後でchfn
コマンドにて変更可能です)
WSLの設定
adduser --force-badname
した人はしておきたいこと
ユーザー名で使えない文字があり、adduser --force-badname
をした人のみ対象です。
(通常通りユーザー作成ができた方は、すでに適応されている設定です)
対象でない方は、「sudo権限の付与」「デフォルトユーザーの変更」を飛ばしてください。
sudo権限の付与
Ubuntuを起動して、以下のコマンドを入力してください。
gpasswd -a <作成したユーザー名> sudo
なお、これはrootユーザー(Ubuntuが起動した直後)で実行してください。
デフォルトユーザーの変更
特に何もしていないと、デフォルトのユーザーがrootになっています。
これは面倒なので、デフォルトユーザーを変更しましょう。
検索窓で、「コマンド」などを打ってコマンドプロンプトを開いてください。
その後、以下のコマンドを入力してください。
ubuntu1804 config --default-user <作成したユーザー名>
なお、ubuntu1804
の部分は、ストアでインストール時に入れたUbuntuのものとなります。
(Ubuntuを入れればubuntu
、Ubuntu 1604を入れればubuntu1604
)
ホームディレクトリの変更
若干好みの話となりますが...ホームディレクトリを変更したい人向けです。
Ubuntuを一旦閉じて再度起動してください。
(すでに作成したユーザーにログインしている方は再度起動は必要ありません)
その後、以下のコマンドを実行してください。
sudo vim /etc/passwd
すると、vimエディタが開くので、以下と同じ表記の行を見つけ、ホームディレクトリにしたいパスに変更してください。
<作成したユーザー名>:x:1000:1000:,,,:/home/<作成したユーザー名>:/bin/bash
↓ 変更
<作成したユーザー名>:x:1000:1000:,,,:<ホームディレクトリにしたいパス>:/bin/bash
例.
hoge:x:1000:1000:,,,:/mnt/c/users/hoge:/bin/bash
これで、Ubuntuを再起動することでホームディレクトリが変更されています。
ファイルシステムの設定
初期設定のままだと、/mnt/c以下でファイルを作成すると777(どの権限でも操作可能)になってしまいます。
これをUbuntuと同じように変更します。
以下のコマンドを実行してください。
sudo vim /etc/wsl.conf
すると、vimエディタが開くので、以下の記述を追加してください。
[automount]
options = "metadata,umask=22,fmask=11"
これで、ディレクトリが755、ファイルが644で作成されるようになります。
brewのインストール
基本的には、ドキュメント通りにやれば大丈夫です。
まず、以下のコマンドを実行します。
sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
こちらが完了したのち、次のコマンドを実行します。
test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)
test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile
echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile
最後に、brewが依存するパッケージ群をインストールします。
今回はUbuntuなので、以下を実行してください。
sudo apt-get install build-essential curl file git
これでbrewが使えるようになりました。
まとめ
WSLを導入することで、自身のdotfilesリポジトリの環境を使い回せるため、メリットが大きかったです。
ただ、いいターミナルが見つからないのが悩みの種です...
もともとHyperを使っていたのですが、少々不具合が見られたので、現在は検証も含めWindows Terminal (Preview)を使っています。
何かいいターミナルがありましたら、お教えいただけると幸いです🙇♂️