在 Windows 上运行 Ubuntu (WSL) 会导致尝试安装 Bun 时出现 SystemOutdated 错误

在 Windows 上运行 Ubuntu (WSL) 会导致尝试安装 Bun 时出现 SystemOutdated 错误

我尝试安装bun https://bun.sh/在我的 Windows 计算机上并在 WSL 上使用 Ubuntu 20.04。

运行curl https://bun.sh/install | bash并尝试运行命令后,出现以下错误:

coding@DESKTOP-PO2H28R:~$ bun create app
Fetching package.json... error: Failed to initialize network thread: SystemOutdated.

我跑了apt-get updateapt-get update之前没有解决问题。我也跑了,wsl --update什么也没做。有谁知道如何解决这个问题?

答案1

bun当尝试在 WSL1/Ubuntu 20.04 下运行时,我可以重现此问题。然而,WSL2 工作得很好,至少对于这个命令来说是这样。

通过运行检查您的版本wsl.exe -l -v

WSL1 不提供真正的 Linux 内核,而是提供一个伪内核,充当 Linux 和 Windows API 之间的系统调用转换层。这确实令人印象深刻,但距离 100% 实施还有很长的路要走。这我上次看到的报告显示大约 73% 的 LTP 测试在 WSL1 上通过。

这听起来可能很低,但这些 API 似乎提供了 99% 以上的功能最常见的开发工具和语言当时。

然而,像 Bun 这样的新的、(显然)经过极其优化的运行时可能依赖于 WSL1 中未实现的东西,这并不奇怪。网络堆栈绝对是 WSL1 和 Linux 内核不同的一个大领域,因为 Windows 和 Linux 架构有很大不同。我们看到的错误明确表明问题出在该区域。

如果您的系统能够运行 WSL2,那么您将需要在 WSL2 实例下运行 Bun。如果您愿意(WSL1 有一些优点),您可以保留现有的 WSL1 Ubuntu 用于其他目的,也可以将其完全转换。

这个答案(除其他外)了解如何备份和克隆现有发行版的一些详细信息。当您执行该--import步骤时,请指定--version 2.

或者,在(可选)备份后,使用wsl --set-version <distro_name> 2.

相关内容