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

2025-05-13 windows linux

なにをしたのか 

以下のコマンドで 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)。