WSL2 の開発環境を自動構築するセット
以前は、 WSL2 に都度コマンドを打って環境構築していたが似たような環境が複数必要になるため自動化し環境構築にかかる時間を省力化した。
Important
2025/05/24 に Backup/Restore を実装した。これにより devtool.ps1 を実行時に /home/user 配下を一定の条件で tar で固め %USERPROFILE%/Documents/WSL2/Backups に吐き出します。 一時保管ため非圧縮です Restore は WSL2 のディストリビューション初回起動時に最新の tar ファイルを利用し展開される。 展開後、 $HOME/.devtool-wsl2.lock を作成することで次回以降は実施されません
- CLI commands
- bash
- ca-certificates
- curl
- git
- gpg-agent
- man
- mtr
- nano
- sudo
- tcpdump
- traceroute
- unzip
- vim
- wget
| Common software | Latest software version |
|---|---|
| Docker Engine | |
| asdf | |
| dprint | |
| mame/wsl2-ssh-agent |
| asdf Plugins | asdf Plugin URL | Latest software version |
|---|---|---|
| assh | zekker6/asdf-assh | |
| aws-cli | MetricMike/asdf-awscli | |
| fzf | asdf-fzf | |
| ghq | kajisha/asdf-ghq | |
| poetry | asdf-community/asdf-poetry | |
| python | danhper/asdf-python | |
| rust | code-lever/asdf-rust | |
| aws-sam-cli | amrox/asdf-pyapp | |
| starship | gr1m0h/asdf-starship | |
| Terraform | asdf-community/asdf-hashicorp | |
| Tmux | aphecetche/asdf-tmux |
| Rust Tools | Latest release |
|---|---|
| dua-cli | |
| ripgrep | |
| topgrade |
Windows Terminal などで PowerShell を開き下記のコマンドを投入すると最新の GitHub Releases から WSL2 イメージを取得し WSL に登録します
powershell -ExecutionPolicy Unrestricted -Command "Invoke-WebRequest -Uri 'https://raw.githubusercontent.com/naa0yama/devtool-wsl2/main/devtool.ps1' -OutFile 'devtool.ps1'; .\devtool.ps1"フラグオプションをいくつか用意しています
-skipWSLImport- WSL へ
Importを実施しません。 - ダウンロードのみを実施し、スクリプト終了時のダウンロードフォルダークリーンアップ処理も実施しません。
- WSL へ
-skipWSLDefault- WSL へ
Importした場合にwsl --set-default <DistributionName>の実行をしません
- WSL へ
Important
-ImportForce- 同じ tag の WSL イメージが登録されている場合、登録解除(
wsl --unregister)を実施し強制的に更新します WSL イメージは削除されますので注意してください
- 同じ tag の WSL イメージが登録されている場合、登録解除(
Import 結果を確認します
dwsl2-<tag> があれば Import 出来ています。
wsl -l -v> wsl -l -v
NAME STATE VERSION
* Ubuntu-22.04 Running 2
dwsl2-8718ff1 Stopped 2
Ubuntu Stopped 2実際に起動してみます。
このセクションではデフォルトに設定してないためディストリビューション指定で起動します。
起動出来ると Bash が起動します。
wsl -d dwsl2-8718ff1
user@dead-desk1:~$
asdf が使えるか確認しておきましょう。
asdf current で確認出来ます。
> asdf current
assh 2.16.0 /home/user/.tool-versions
aws-sam-cli 1.115.0 /home/user/.tool-versions
awscli 2.15.19 /home/user/.tool-versions
fzf 0.50.0 /home/user/.tool-versions
ghq 1.6.1 /home/user/.tool-versions
poetry 1.7.1 /home/user/.tool-versions
python 3.10.12 /home/user/.tool-versions
rust stable /home/user/.tool-versions
starship 1.18.2 /home/user/.tool-versions
terraform 1.1.3 /home/user/.tool-versions
tmux 3.4 /home/user/.tool-versions
この手順では default に設定していないためディストリビューションを指定して起動する必要があります。
手間を省くために defualt に設定すると wsl コマンドで起動してくる事になります
下記の例では dwsl2-8718ff1 を defualt に設定します。
* の付いている物が default 起動の WSL です。
> wsl -l -v
NAME STATE VERSION
* Ubuntu-22.04 Running 2
dwsl2-8718ff1 Stopped 2
Ubuntu Stopped 2
> wsl -s dwsl2-8718ff1
この操作を正しく終了しました。
> wsl -l -v
NAME STATE VERSION
* dwsl2-8718ff1 Stopped 2
Ubuntu-22.04 Running 2
Ubuntu Stopped 2登録解除の場合は下記で ディストリビューションを停止してから --unregister を実施します
wsl -t dwsl2-8718ff1
wsl --unregister dwsl2-8718ff1