WSL 更新でやったことのメモ

Windows Subsystem for Linux (WSL) では複数のディストリビューションをインストールできる。手元の PC を見たら、WSL 1 時代にインストールした Ubuntu 18 だけが入った状態だった。中に大事なファイルもないので、いったん消して作り直すことにした。

Microsoft Store からのインストール

Ubuntu

Microsoft Store には、Ubuntu LTS のバージョンごとに別アプリとして登録されている。その中でバージョン番号なしの "Ubuntu" として登録されているアプリは最新の LTS を指している。

僕の場合、似た名前の "Ubuntu on Windows" がインストールされていた。一度これのまま試してみたところ、ひとつ前の LTS が使われた。

Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.15.90.1-microsoft-standard-WSL2 x86_64)

コマンドで調べてみても、

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.6 LTS
Release:        20.04
Codename:       focal

そこで Microsoft Store から "Ubuntu" をインストールすることにした。

違いを忘れないなら "Ubuntu on Windows" を残しておいても問題ないけど、僕はわすれそうなのでそちらはアンインストールした。

Windows Subsystem for Linux

ディストリビューションとは別に、"Windows Subsystem for Linux" がアプリとして Microsoft Store に登録されている。WSL は、以前は OS のいち機能として提供されていた。今は最新版がストアから提供されるようになったことで、より柔軟に更新をリリースできるようになった、ということらしい。ということでこちらもインストール。

古い環境の削除

ググるとまず出てきたのが、

  • Windows の「設定」→「アプリ」→「インストールされているアプリ」→「Ubuntu」→右端の「…」→「詳細オプション」→「リセット」セクションの「リセット」ボタンを押す

が、"Ubuntu" ではなく "Ubuntu on Windows" を使っていたせいなのか、これではうまく消えてくれなかった。

コマンドプロンプトPowerShellwsl -l -v を実行すると、Ubuntu が消えずに残っていて、ステータスが "Stopped" と表示されていた。

wsl --unregister Ubuntu を実行したら消えてくれた。

新しい環境の作成

環境を消すのは手間だけど、作成するのは簡単で、スタートメニューからディストリビューションを開くだけでいい。

初回に環境が自動で作成される。ユーザー名とパスワードもここで聞かれる。

Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 5.15.90.1-microsoft-standard-WSL2 x86_64)

うん。今度は最新の LTS で環境を作れた。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.2 LTS
Release:        22.04
Codename:       jammy

Ubuntu 環境内のパッケージ更新

$ sudo apt update
$ apt list --upgradable
$ sudo apt upgrade

upgrade 中にエラーメッセージが出ていた。

snapd.snap-repair.service is a disabled or a static unit not running, not starting it.
Failed to restart snapd.mounts-pre.target: Operation refused, unit snapd.mounts-pre.target may be requested by dependency only (it is configured to refuse manual start/stop).
See system logs and 'systemctl status snapd.mounts-pre.target' for details.
Could not execute systemctl:  at /usr/bin/deb-systemd-invoke line 142.

パッケージ更新自体は行われたようなので「ヨシ!」かな?