原因
Atomic /usr 是只读OSTree镜像;系统nodejs的npm默认全局目录指向 /usr/lib/node_modules,root也无法写入,会直接报错 EACCES。
sudo npm‑g 不仅会权限报错,npm脚本以root执行还有安全风险。
通过NVM安装
node、npm、全部全局包都放在家目录,完全不碰系统layered包。
1
| curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
写入shell配置,重启终端:
安装LTS版本:
1 2 3 4 5
| nvm install --lts nvm use --lts
npm config get prefix
|
安装成功之后就可以不需要sudo安装全局包:
1
| npm install -g typescript
|
全程不需要sudo,全局包自动放在 ~/.nvm/versions/node/* 下面。
优点:可以随意切换node版本;系统rpm‑ostree操作完全不影响node环境。
排查命令
1 2 3 4 5 6 7 8
| npm config get prefix
echo $PATH
npm list -g --depth=0
|