lmk123 / blog

个人技术博客,博文写在 Issues 里。
https://github.com/lmk123/blog/issues
623 stars 35 forks source link

升级 WSL 里的 Ubuntu 版本 #125

Open lmk123 opened 1 year ago

lmk123 commented 1 year ago

今天要在 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 的“设置” - “应用” - “安装的应用”里卸载掉它。