Ubuntu 的 apt 源没有自带 nodejs ,需要手工添加 nodejs 的源,然后通过 apt 安装。
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
安装后(2021 年 3 月 6 日), nodejs 是 16.1 , npm 是 7.11。
node -v
npm -v
然后在安装一下国内 npm 的镜像 cnpm ,速度要快很多:
# cnpm 使用taobao源
sudo npm install cnpm -g --registry=https://registry.npm.taobao.org
# npm 直接使用taobao源
npm config set registry https://registry.npm.taobao.org
如果是原始的 ubuntu ,到此安装结束。但如果在 WSL 里的 ubuntu ,会爆出来一大堆错误:
npm ERR! code EACCES
npm ERR! syscall rename
npm ERR! path /usr/lib/node_modules/.staging/npm-1c7703b5/node_modules/yargs-parser
npm ERR! dest /usr/lib/node_modules/.staging/yargs-parser-3f5f2639
npm ERR! errno -13
npm ERR! Error: EACCES: permission denied,
rename '/usr/lib/node_modules/.staging/npm-1c7703b5/node_modules/yargs-parser'
-> '/usr/lib/node_modules/.staging/yargs-parser-3f5f2639'
简单看上去像是权限问题。但我们已经用了 sudo 运行,理论上不存在权限问题,比如正常的 ubuntu 下便没有任何问题。
试了wsl npm install EACCES: permission denied 错误解决方法里提到的方法,下面方法可以取消上面错误:
sudo npm config set prefix="/mnt/c/npm-global"
注意上面设置的路径必须是/mnt
下挂载的实际盘符下的路径,不能是/home/
或/opt/
之类的 linux 的路径。
用了这个方法之后,cnpm
可以正常安装了。但安装后输入cnpm
发现系统无法识别!这时候需要将/mnt/c/npm-global/bin
添加到系统环境变量 PATH :
export PATH=$PATH:/mnt/c/npm-global/bin
要想自动生效,需要将该命令放到~/.bashrc
或者~/.zshrc
启动脚本里。
最后使用时,需要添加一大堆依赖项,否则会爆找不到函数定义错误:
-lfolly -lgflags -lpthread -lthrift -ldouble-conversion -lglog
Q. E. D.