将 WSL 从 20.10 升级到 Ubuntu Hirsute 21.04

将 WSL 从 20.10 升级到 Ubuntu Hirsute 21.04

我在 sudo do-release-upgrade 期间遇到了这种情况:

Reading cache
pcilib: Cannot open /proc/bus/pci
lspci: Cannot find any working access method.

Checking package manager
Reading package lists... Done
Building dependency tree
Reading state information... Done
Hit http://security.ubuntu.com/ubuntu groovy-security InRelease
Hit http://archive.ubuntu.com/ubuntu groovy InRelease
Hit http://archive.ubuntu.com/ubuntu groovy-updates InRelease
Hit http://archive.ubuntu.com/ubuntu groovy-backports InRelease
Fetched 0 B in 6s (0 B/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done

Restoring original system state

Aborting
Reading package lists... Done
Building dependency tree
Reading state information... Done
=== Command detached from window (Wed Jul 14 08:30:31 2021) ===
=== Command terminated with exit status 1 (Wed Jul 14 08:30:41 2021) ===

并保留在终端,无需采取进一步行动。

如何修复它并进行全面升级?

答案1

总结:apt purge snapd

我也有 WSL1 系统。使用 do-release-upgrade 从 ubuntu 20.10 升级到 21.04 也失败了。我遇到了这篇 Reddit 帖子这为我指明了正确的方向。显然,出于某种原因,WSL 不喜欢升级 snapd。我不使用 snapd,所以我删除了它。

删除 snapd 后,我仍然看到 lspci 失败,但它几乎更新了所有内容。有一个包失败了:usrmerge,它的失败与这个 askubuntu 问题Both /lib/udev/hwdb.bin and /usr/lib/udev/hwdb.bin exist.解决方法是删除其中一个。我删除了较旧的一个。

答案2

听起来您正在使用 WSL1,因为lspci在升级过程中某处出现故障。WSL1 /proc下的支持比 WSL2 下要有限得多。

如果是这种情况,请尝试在运行之前将实例转换为 WSL2 do-release-upgrade

  • 首先,确认发行版名称(如果您还不知道的话),请使用wsl -l -v
  • 通过 确保实例未运行wsl --terminate <distroname>。几分钟后wsl -l -v再次使用 确认实例已停止。
  • 使用以下方式备份实例wsl --export <distroname> <filename.tar>
  • 使用以下命令更改实例的 WSL 版本wsl --set-version <distroname> 2

在那里再试sudo do-release-upgrade一次。完成后,您可以随时将版本更改回 WSL1。

请记住,与 LTS 版本不同,Canonical 不一定使用 WSL 测试 21.04(他们测试过 WSL1 的可能性更小)。因此,请保留 20.04 的备份,以防万一。

相关内容