提示:在继续阅读之前,请注意此文章最后更新于 1771 天前,其中的部分内容可能已经无效或过时。
安装wsl2
前置条件:
- 更新windows到2004: https://go.microsoft.com/fwlink/?LinkID=799445
- 启用wsl2
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
<!-- more -->
# 重启
# WSL 2 需要更新其内核组件。有关信息,请访问 https://aka.ms/wsl2kernel。下载内核包安装
wsl --set-default-version 2 # wsl2需要开启BIOS 虚拟化支持
其实官网文档更加的步骤分明和详细,并针对常见错误进行了解答。参见
适用于 Linux 的 Windows 子系统安装指南 (Windows 10)。并提供了自动化安装方法wsl --install
# 常用命令
wsl --help
wsl --list --verbose # 查看已安装linux分发版的wsl版本
安装docker
安装node
- 方法一
curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash - sudo apt-get install -y nodejs
- 方法二(不推荐,会有一些问题)
使用二进制压缩包安装,下载:
cd ~/package
sudo tar xf node-v12.18.3-linux-x64.tar.xz
# 备份.bashrc
cp ~/.bashrc ~/.bashrc.bak
vim ~/.bashrc
# 在结尾加上 export PATH="$PATH:~/package/node-v12.18.3-linux-x64/bin
# 如果碰到使用npm报/usr/bin/env: ‘node’: No such file or directory。需要创建一个软连接
ln -s ~/package/node-v12.18.3-linux-x64/bin/node /usr/bin/node
这种方法只有当前用户可以使用npm,原因目前还没有搞得很清楚。 root用户下node可用但是npm不可用,不知道为什么,想要往~/.bashrc里加$PATH需要注意不能用~/,因为当前用户是root。要用/home/xzdry(node二进制包的位置)
- 方法三 按照yarn官网推荐的,运行
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn
这种办法下载的node比较老。参考yarn安装
安装q的话只能在sudo下安装。在xzdry用户下依然会报/bin/sh: 1: npm: not found这个错误
其它问题
子系统home路径在哪里
C:\Users\n0049651\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home
也可以通过vscode打开
无法在container里打开git respository?
ssh-add $HOME/.ssh/github_rsa // 将本地的sshkey 传输到 openssh agent # 或者创建一个软链接链接到本地
alpine 使用阿里云的源:
C:\Users\n0049651\.vscode\extensions\ms-vscode-remote.remote-containers-0.134.1\scripts
修改2个Dockerfile文件:
FROM alpine:3.11.2
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk add --no-cache \
nodejs \
git \
openssh-client \
docker-cli \
;
切换阿里云
sudo npm config set registry https://registry.npm.taobao.org --global
sudo npm i yarn -g
sudo yarn config set registry https://registry.npm.taobao.org --global
重启wsl
net stop LxssManager
net start LxssManager
# 或
wsl --shutdown
wsl2内存占用过大
%UserProfile%
.wslconfig
[wsl2]
memory=4GB
swap=0
localhostForwarding=true
不加载windows path
默认会加载windows下的全局PATH,但这样就不够纯净,会导致npm找不到的问题,具体参见:
Problems with Windows PATH variable getting imported #1890
问题截图:
原因是linux加载win的脚本会带上^,更为详细的原因还需要继续学习探知
# 在C:\Users\<yourUserName>\.wslconfig下添加,如没有需要创建
# 路径也可以写成 %UserProfile%\.wslconfig
[interop]
enabled = true
appendWindowsPath = false
参考
Problems with Windows PATH variable getting imported #1890
更新 WSL 2 Linux 内核
用 wslconfig 配置全局选项
WSL commands and launch configurations
yarn安装