wsl --uninstall は wsl --install の逆でない

2025-05-13 2025-05-13 windows linux pc

なにをしたのか

以下のコマンドで archlinux を指定し、ディストリビューションを追加しました。

wsl --install archlinux

その後、当該環境が不要となったために、以下のコマンドを実行しました。

# ⚠このコマンドはあなたの期待する結果をもたらしません
wsl --uninstall archlinux

もちろん、期待した動作は、「ディストリビューション archlinux が削除されること」です。

なにが起こったのか

UACプロンプトが出たのち、「システムからWSL本体が削除」されました。

--uninstall--install とは非対称だったのです。

(もともと、 --install は本体をインストールするコマンドという側面もあるわけですが…。)

その後ろの archlinux は完全に無視され、警告が出力されることもありませんでした。

結果として、ディストリビューションは一つも削除されることはなく、 もう一度WSLをインストールすることで全てが元通りになりました。

ディストリビューションを削除したかったら

wsl --unregister archlinux

らしいです。わかるかい。

本当に打つべきコマンドは

本当に打つべきコマンドは wsl --help だったのかも知れません。

    --install [Distro] [Options...]
        Install a Windows Subsystem for Linux distribution.
        For a list of valid distributions, use 'wsl.exe --list --online'.
...
    --uninstall
        Uninstalls the Windows Subsystem for Linux package from this machine.
...
    --terminate, -t <Distro>
        Terminates the specified distribution.

    --unregister <Distro>
        Unregisters the distribution and deletes the root filesystem.

雰囲気でパソカタするものではありませんね。

訂正とお詫び

本記事では、当初、数分間にわたり、誤って 以下のコマンドを「ディストリビューションの削除」であると紹介していました。

wsl --terminate archlinux

実際には、この --terminate は「当該ディストリコンテナの終了」を意味するようです。

当該環境の systemd などが、まるっと止まります。止まるだけです。

WSLはAWSではありません。 わかるかい (2)。