Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

升级 WSL 里的 Ubuntu 版本 #125

Open
lmk123 opened this issue Dec 28, 2022 · 0 comments
Open

升级 WSL 里的 Ubuntu 版本 #125

lmk123 opened this issue Dec 28, 2022 · 0 comments
Labels

Comments

@lmk123
Copy link
Owner

lmk123 commented Dec 28, 2022

今天要在 Windows 系统里调试一个 bug,所以又折腾了一下 Windows 的开发环境。

我之前是用 WSL 作为开发环境的(参考 #86#89),今天我先试了下安装 Node.js 18。虽然用 nvm 成功安装了,但是在运行 node -v 时报错了:

node: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.28' not found (required by node)

查了一下,发现是由于我的 Ubuntu 版本太低了。我的 Ubuntu 版本是 16.04,而 Node.js 18 不支持在这个版本中使用,于是准备升级一下 Ubuntu 版本。

在进入 WSL 时,它提示我升级 wsl ,所以我先是运行了 wsl --update

然后,我阅读了一篇关于升级的文章:

Ubuntu 16.04 End-Of-Life on WSL: Migrating to newer versions

大致步骤:

  1. 在微软商店里安装想要使用的 Ubuntu 版本
  2. 导出现有的 Ubuntu 文件
  3. 将导出的文件导入到新版本的 Ubuntu 中
  4. 安装新版本的 Ubuntu

我的步骤有所不同,因为我想创建一个全新的 Ubuntu 环境,所以我的步骤是:

  1. 先在微软商店里安装 Ubuntu 22.04。在微软商店里搜索“ubuntu”就能搜到。注意:可能需要关掉梯子才能正常打开微软商店。另外,我使用前面文章里提供的微软商店链接,即使关了梯子也没法打开电脑里的微软商店,最后只能自己在微软商店里搜索。
  2. 安装好了之后,开始菜单里会多一项“Install RELEASE (Ubuntu-22.04)”,点击安装即可

好了之后,在 PowerShell 里运行 wsl -l 会看到四个系统:

Ubuntu(默认)
Ubuntu-22.04
docker-desktop
docker-desktop-data

默认的那个就是我之前使用的 Ubuntu 16.04,于是我把 Ubuntu 22.04 设为了默认:wsl -s Ubuntu-22.04

再运行 wsl ~ 就能看到,我以 root 身份进入了 Ubuntu 系统,顺便运行 lsb_release -a 确认版本无误。

wsl ~ 等同于进入 wsl 后自动运行一次 cd ~,否则进入 wsl 时的工作目录会是 PowerShell 的工作目录。

然后安装 Node.js 18,试了一下能正常运行。

如果确认之前的 Ubuntu 里已经没有重要的文件,那么可以运行 wsl --unregister Ubuntu 删除它,之后运行 wsl -l 就会发现它不在了。

然后可以在 Windows 的“设置” - “应用” - “安装的应用”里卸载掉它。

@lmk123 lmk123 added the WSL label Dec 28, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant