WSL Ubuntu 安装 nodejs 和 cnpm

作者: , 共 1395 字 , 共阅读 0

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.

类似文章:
IT » WSL, win10, windows terminal
WSL 是指 windows subsystem for linux ,在 win10 被引入,为用户提供 Linux 命令行和编程环境。
IT » WSL, 网络共享
现在 windows 里面,把网络共享地址映射到盘符,比如 Y。然后执行下面命令,接下来就能通过/mnt/y/访问到网络共享文件了。
IT » ubuntu, 网络代理
下面命令设置环境变量http_proxyhttps_proxyhttp://127.0.0.1:7890,分别用于访问非加密和加密网址。目前大部分网址都是加密网址。
IT »
聊天社交:
IT » WSL, SSH
世界上最好的 Linux 发行版 Bash on Windows 已经升级到了 Ubuntu 18.04 ,并且提供越来越多的功能。下面是笔记,记录如何启动子系统的 SSHD 服务并设置开机自动启动,也顺带开机自动启动了子系统。
IT » apt, pip, python, ubuntu
正常而言,大家都是用 pip 来安装 python 的包。但有时候无意中(通常是为安装某个特定的软件,根据软件的安装提示),会使用 apt 安装 python 包。而且其实很多包都可以通过 apt 来安装的,名字就是包名再加python3-的前缀。安装后的库以及依赖项位于/usr/lib/python3/dist-packages目录下。比如 apt 安装 requests 包:
IT » Python, Ubuntu
主要是update-alternatives命令的使用。
相似度: 0.079
IT » ubuntu
需修改/etc/apt/sources.list
相似度: 0.068
IT » javascript, vue
写项目的时候遇到有需要就往 package.json里面添加新的包,即使后面没用也忘了删除,结果越积累越多。depcheck是检查依赖项的工具,会提示哪些包没有实际用到。安装:
IT » windows terminal
当用 windows terminal 登录 SSH 服务器后:
该路线从后花园景区进入。上山穿过八十一山洞,特有意思。下山非常陡峭。因此虽然路程只有 6 公里,爬升 400 ,难度却也不低。