Linux 環境構築手順（WSL環境上）

こんにちは。
Windows 10 (64 bit) の Windows Subsystem for Linux (WSL)「Linux用Windowsサブシステム」を利用し、Linux 環境を構築しました[^1]（合わせて Linuxbrew もインストールしました）。

**1.**　[Powershell を管理者権限で起動する](https://qiita.com/kkdd/items/f58481debef56d44048d)
そして、```ExecutionPolicy``` を ```RemoteSigned``` へ設定する。

```
PS> Set-ExecutionPolicy RemoteSigned
```

続いて、Linux ディストリビューション（Ubuntu 22.04 LTS）（および [Windows Terminal](https://docs.microsoft.com/ja-jp/windows/terminal/) (ターミナル環境)）を入手・インストールする[^2]：

```
PS> Invoke-WebRequest -Uri https://aka.ms/wslubuntu2204 -OutFile ubuntu2204.appx -UseBasicParsing
PS> Add-AppxPackage ubuntu2204.appx
PS> Remove-Item ubuntu2204.appx
```

* もしくは、[Microsoft Store](https://ja.wikipedia.org/wiki/Microsoftストア) を起動し、検索欄に「WSL」などと入力し、この Ubuntu 22.04 LTS を見つけ、入手インストール。

[^1]: 参考：「[Windows Subsystem for Linux (WSL)の設定手順](https://hackmd.io/@h2tg95D2RP2ed-D8u-49Mg/HkIdu7QtV?type=view)」、「[Windows 10でLinuxプログラムを利用可能にするWSLをインストールする（バージョン1803以降対応版）](https://www.atmarkit.co.jp/ait/articles/1608/08/news039.html)」、「[【WSL入門】第1回　Windows 10標準Linux環境WSLを始めよう](https://www.atmarkit.co.jp/ait/articles/1903/18/news031.html)」
[^2]: 参考例：「[Microsoft Store アプリケーションのインストール（PowerShell コマンドライン）](https://qiita.com/kkdd/items/8aead1424315199dc851)」


続いて、Windows Subsystem for Linux (WSL) を有効化するために、下記のコマンドを実行し[^4]コンピュータを再起動する。

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

[^4]: もしくは、「コントロールパネル >　プログラムと機能 > 「Windowsの機能の有効化または無効化」の中で有効化する」

**2.**　Linux ディストリビューションのインストール
スタートメニュー上で、入手した Linux ディストリビューションを「起動」する。この「起動」により、実際のインストールが始まる。Microsoft アカウントのサインインはスキップ可能で、sudo 用の username, password を決めて入力する。

```
  Enter new UNIX username:
  Enter new UNIX password:
  Retype new UNIX password:
```

**3.**　Linux ターミナルが起動できることを確認する
Linux ターミナル環境（Windows Terminal、もしくは、ディストリビューションと同時にインストールされるデフォルトのもの）を起動しコマンドが実行されることを確認する：

```
$ uname -a
Linux DESKTOP...
$ wsl.exe --list --verbose
  NAME            STATE           VERSION
* Ubuntu-22.04    Running         1
$ cat /etc/os-release
  :
  :
```

続いて、各種設定を行う：

```
$ echo 'umask 002' >> ~/.bashrc
$ echo -e 'export VISUAL="vim"\nexport EDITOR="vim"' >> ~/.bashrc
$ echo 'export PATH="/home/linuxbrew/.linuxbrew/sbin:/home/linuxbrew/.linuxbrew/bin:$PATH"' >> ~/.bashrc
```

**4.**　Linux ターミナル環境を再起動し更新などを行う：

```
$ sudo apt update
$ apt list --upgradable
$ sudo apt upgrade -y
$ sudo apt install git curl file build-essential
```

**5.**　Linuxbrew のインストール
また今回、[Linuxbrew](https://docs.brew.sh/Homebrew-on-Linux) をインストールし、それを利用して、今後使う可能性が高いと考えた ```gcc``` ```zlib``` をインストールしました。

```
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
$ brew doctor
$ brew update
$ brew install gcc zlib
```

**6.**　Linux 上のサービス稼働状態を確認
cron, ssh の状態を確認しました

```
$ sudo service cron status
 * cron is not running
$ sudo ssh-keygen -A
$ sudo service ssh start
$ sudo service ssh status
 * sshd is running
```

**7.**　Windows OS の exe コマンド実行例

```where.exe```コマンドの使い方などを表示させます。

```
$ "/mnt/c/Windows/System32/where.exe" "/?"
```
* 上記は```PS> "C:\Windows\System32\where.exe" "/?"```に相当します。

**8.**　winget.exe コマンド実行例

```
$ powershell.exe /c winget.exe --info
```

* 上記は ```winget.exe``` を単独指定しても動作しない場合に、```powershell.exe``` を介して動作させています。
  * ```winget.exe``` のフルパスは、```C:\Users\{USERNAME}\AppData\Local\Microsoft\WindowsApps\winget.exe``` です。