是否有推荐的nvm安装,所以所有用户都可以使用它?我在网上找不到任何关于此事的内容。
这就是我所做的
然后每个用户必须运行“nvm use”或默认将其放入其配置文件
不确定是否有更好的方法?
谢谢
答案 0 :(得分:50)
这是我做的:
在nvm
以root身份安装/opt/nvm
。看起来像一个合适的位置。
# git clone git@github.com:creationix/nvm.git /opt/nvm
创建了目录/usr/local/nvm
。这是下载的地方($NVM_DIR
)
# mkdir /usr/local/nvm
创建目录/usr/local/node
。这是NPM全球性的内容:
# mkdir /usr/local/node
在nvm.sh
中创建了一个名为/etc/profile.d
的文件,其中包含以下内容:
export NVM_DIR=/usr/local/nvm
source /opt/nvm/nvm.sh
export NPM_CONFIG_PREFIX=/usr/local/node
export PATH="/usr/local/node/bin:$PATH"
重新登录shell会话,然后设置默认节点版本。
# nvm install 0.10
# nvm alias default 0.10
下次登录shell会话时,节点二进制文件现在应该位于PATH
所有用户中。 NPM将全局内容安装到/usr/local/node
前缀。
答案 1 :(得分:28)
最好全局安装一个节点副本,以便其他用户可以访问它。为此,请运行以下命令(在提示符下输入用户密码):
n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local
这个建议是将您通过nvm激活的任何版本的节点复制到/usr/local/
目录并设置权限,以便所有用户都可以访问它们。
要检查它是否有效,请成为root用户并执行另一个命令以确保该节点现已安装到/usr/local/bin
:
sudo -s
which node
如果您想要更改系统安装的节点版本,只需执行另一个nvm使用vXX.XX.XX将用户节点切换到所需版本,然后重新运行上面的第一个命令进行复制它到系统目录。
答案 2 :(得分:13)
sudo -s
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | NVM_DIR=/usr/local/nvm bash
nvm.sh
中创建了一个名为/etc/profile.d
的文件,其中包含以下内容:
#!/usr/bin/env bash
export NVM_DIR="/usr/local/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
/etc/profile.d/nvm.sh
nvm install node
npm install -g npm
答案 3 :(得分:5)
在Linux服务器上安装NVM,然后使用NVM安装节点版本(以root用户身份运行所有命令)。之后,对所有用户运行以下命令,使nvm可以使用nodejs
n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local
上面的命令有点复杂,但是它所做的就是将通过nvm激活的任何版本的节点复制到/ usr / local /目录(用户安装的全局文件应位于Linux VPS /服务器上)和设置权限,以便所有用户都可以访问它们。
/root/.nvm/versions/node/v8.10.0/ bin / node
切换用户名检查您的节点版本。
su - username
which node
/usr/local/bin/node
答案 4 :(得分:3)
由于LJHarb建议不要全局安装,因此我决定在您登录服务器时创建一个安装nvm的脚本。我需要这个,因为我有几个用户设置可能登录,但需要访问pm2(以监控我们的一个应用程序)。
在/etc/profile.d/中创建脚本(例如名为nvm.sh):
#!/bin/bash
NODE_VER=6.2.2
if [ ! -f ~/.nvm/nvm.sh ]; then
# May need to be updated with the latest nvm release
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash
fi
source ~/.nvm/nvm.sh
if ! command -v node | grep -q $NODE_VER; then
echo "Node is not installed"
nvm install $NODE_VER
nvm alias default $NODE_VER
fi
对于我们的应用程序,我们需要在用户之间共享pm2:
if ! command -v pm2 &>/dev/null; then
echo "pm2 not installed"
npm install -g pm2
fi
# Share pm2 configuration between users
alias pm2='env HOME=/opt/sora pm2'
答案 5 :(得分:1)
还有nvm的这个fork专门为全球使用:https://github.com/xtuple/nvm
wget -qO- https://raw.githubusercontent.com/xtuple/nvm/master/install.sh | sudo bash
sudo chown -R $USER /usr/local/nvm
nvm install 8
更新:我尝试了多种方法来使用xtuple的nvm以及n来管理全局节点环境,并且我总是遇到有问题的极端情况。最后,最适合我的是从他们的网站上下载几个版本的node并将其解压缩到/ usr / local。然后用我想要的版本更新我的路径。例如
export PATH=/usr/local/node-v7.10.1-linux-x64/bin:$PATH
注意:您可能必须将节点路径更改为chmod 777或指定一个用户来管理它。
答案 6 :(得分:0)
我有一个有两个用户的小型 VPS,由于空间有限,想避免安装多个节点副本
只需将拥有 NVM 的 $HOME/.nvm
用户移动到 /opt/nvm
和 chmod -R 777 /opt/nvm
,以便所有用户都可以写
然后将 NVM_HOME
中每个用户的 .bashrc
设置为 /opt/nvm
对我来说似乎是最明显的解决方案,因为一个用户有一个预先存在的 .nvm 文件夹
回复:丑陋的权限,此副本仅用于开发目的 - 我强烈建议任何在生产中使用节点的人不要考虑这种方法