我刚刚为 Linux 的 Windows 子系统安装了 Ubuntu 22.04 LTS,但我遇到了一些问题。每次我使用 安装新软件包时sudo apt install
,我都会收到 2 条消息:
Failed to retrieve available kernel versions.
Failed to check for processor microcode upgrades.
使用 Ubuntu 20.04 LTS 时不会发生此问题。
即使我收到这些消息,我也可以安装 Linux 包并将它们成功集成到 Visual Studio Code 中。当我使用 . 检查内核时uname -r
,我得到了5.10.102.1-microsoft-standard-WSL2
.
一切正常,但这些消息一直与我有关。
我想知道为什么会出现这些消息以及如何修复它们。谁能给我一些解决这些问题的建议?这些消息是致命的吗?
简短的回答:
取消注释并更改以下设置:
安装软件包时您将不再收到这些警告。
更多细节:
这在背景上与 Raspberry Pi 上发生的相同“问题”相似,但根本原因有所不同。
真的没什么好担心的。这是 Ubuntu 在安装软件包后(最近)完成的一项新检查,以确定是否需要采取其他措施。
处理这个(并导致这些警告)的包是
needrestart
. 来自apt show needstart
:在 WSL2 下,内核和微代码都不会正确报告,因为我们在 WSL2 虚拟机(我们无法访问)内的容器中运行 Ubuntu。但是,鉴于上述信息,它可能会在某些情况下派上用场,具体取决于您运行的其他守护进程或容器。
您可以继续使用其余功能,而无需通过上述配置文件更改进行内核/微代码检查。它们是否有用取决于您的 WSL2 用例。
或者,如果您发现额外的输出不能派上用场,您可以通过以下方式完全删除该功能(根据 Raspberry Pi 问题中的指导):
就个人而言,我还不确定这个包作为 WSL2 的默认 22.04 rootfs 的一部分是否真的有意义。但时间会证明一切。不过,我确信很多人在开始在 WSL 中安装 22.04 时都会有这个问题。
WSL1 用户
但是,如果您使用的是 WSL1,我在调查的这个阶段的建议是完全删除包。用于检查过时包的过程
needrestart
似乎在 WSL1 的系统调用翻译“伪内核”下不起作用,并且您将定期收到needrestart
关于运行过时的二进制文件和库的误报,包括sh
、apt
和init
(以及其他)。