【发布时间】:2020-02-10 05:02:13
【问题描述】:
我正在尝试以一种方式安装节点,使所有用户都能够在没有 sudo 访问权限的情况下全局安装 npm 包。
通常,您可以在互联网上找到人们说您应该这样做:
npm config set prefix $HOME/.npm-packages
但是 $HOME 只对单个用户有用。
所以我选择了这段代码:
# Install node
sudo apt install -y curl
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt install -y nodejs
# Set node global packages folder as /usr/local/lib/node_modules
NPM_PACKAGES="/usr/local/lib/node_modules"
sudo mkdir -p $NPM_PACKAGES
sudo chmod 777 $NPM_PACKAGES
npm config set prefix $NPM_PACKAGES
# Update the path and manpath to read from npm packages
echo "export PATH="\""\$PATH:$NPM_PACKAGES/bin"\""
export MANPATH="\""\${MANPATH-\$(manpath)}:$NPM_PACKAGES/share/man"\" | sudo tee '/etc/profile.d/node-path.sh'
source /etc/profile.d/node-path.sh
当我尝试使用 npm 与另一个用户一起安装 pm2 时,我得到:
npm ERR! code EACCES
npm ERR! syscall symlink
npm ERR! path ../lib/node_modules/pm2/bin/pm2
npm ERR! dest /usr/bin/pm2
npm ERR! errno -13
npm ERR! Error: EACCES: permission denied, symlink '../lib/node_modules/pm2/bin/pm2' -> '/usr/bin/pm2'
显然,我应该为每个用户执行npm config set prefix $NPM_PACKAGES。
所以我有 4 个问题:
- 这种方法是否适合我想要实现的目标?
-
/usr/local/lib/node_modules是 npm 包的好选择,还是有更好的地方? - 有没有办法让所有用户一劳永逸地
npm config set prefix? - 如果没有,我应该将其添加到
/etc/profile.d/node-path.sh文件中吗?
【问题讨论】:
-
请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。 避免同时提出多个不同的问题。请参阅How to Ask
-
哼...问题其实都是相关的。这 4 点更多是关于验证我尝试的每一步。您是否有更准确的建议有助于改进问题?