繁体   English   中英

NVM & Node.js - 推荐所有用户安装

[英]NVM & Node.js - Recommended install for all users

是否有 nvm 的推荐安装以便所有用户都可以使用它? 我在 web 上找不到与此相关的任何信息。

这就是我所做的

  • 在公共目录中安装 nvm
  • 为所有用户放置 nvm.sh 脚本 locationin.profile
  • 创建了一个 nvm/alias 目录(如果其他用户不在此处,nvm 会抱怨)

那么每个用户必须运行“nvm use”或者默认将其放入他们的配置文件中

不确定是否有更好的方法?

谢谢

这是我所做的:

  1. 以 root 身份在/opt/nvm中安装nvm 似乎是一个合适的位置。

     # git clone git@github.com:creationix/nvm.git /opt/nvm
  2. 创建目录/usr/local/nvm 这是下载的地方( $NVM_DIR

     # mkdir /usr/local/nvm
  3. 创建目录/usr/local/node 这就是 NPM 全局内容的去向:

     # mkdir /usr/local/node
  4. /etc/profile.d中创建了一个名为nvm.sh的文件,其内容如下:

     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"
  5. 重新登录到 shell 会话,然后设置默认节点版本。

     # nvm install 0.10 # nvm alias default 0.10

下次登录 shell 会话时,节点二进制文件现在应该在所有用户的PATH中。 NPM 会将全局的东西安装到/usr/local/node前缀。

最好全局安装一份节点副本,以便其他用户可以访问它。 为此,请运行以下命令(在提示符处输入您的用户密码):

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 用户并执行另一个 which 命令以确保该节点现在已安装到/usr/local/bin

sudo -s
which node

如果您想更改系统范围内安装的节点版本,只需执行另一个 nvm 使用 vXX.XX.XX 将您用户的节点切换到您想要的版本,然后重新运行上面的第一个命令将其复制到系统目录。

  1. 以 root 身份登录: sudo -s
  2. 安装 nvm: curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | NVM_DIR=/usr/local/nvm bash curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | NVM_DIR=/usr/local/nvm bash
  3. /etc/profile.d中创建了一个名为nvm.sh的文件,其内容如下: #!/usr/bin/env bash export NVM_DIR="/usr/local/nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm #!/usr/bin/env bash export NVM_DIR="/usr/local/nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
  4. 运行/etc/profile.d/nvm.sh
  5. 安装节点: nvm install node
  6. 可选择使用以下命令更新 npm: npm install -g npm

在 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

由于 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'

还有这个为全球使用而设计的 nvm 分支: 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 或指定一个用户来管理它。

我有一个有两个用户的小型 VPS,由于空间有限,想避免安装多个节点副本

只需将具有 NVM 的用户的$HOME/.nvm移动到/opt/nvmchmod -R 777 /opt/nvm被所有用户写入

然后将.bashrc中每个用户的NVM_HOME设置为/opt/nvm

对我来说似乎是最明显的解决方案,因为一个用户有一个预先存在的 .nvm 文件夹

回复:丑陋的权限,此副本仅用于开发目的 - 我建议任何在生产中使用节点的人不要考虑这种方法

我找到了一种更简洁的方法,这样你可能可以有多个带有调整的版本,我还没有尝试过。

登录到您的 root 帐户并按照以下步骤操作。

  1. 安装非虚拟机
  2. 用它安装节点,例如:
nvm install 14
n=$(which node);
n=${n%/bin/node};cd $n;cd ..;
ls
  1. 选择一个版本并运行它:
node_v=the_version_you_picked
mv $node_v /usr/local/node/$node_v;cd /usr/local/node/$node_v;chmod -R 755 ./

echo "PATH=\${PATH}:/usr/local/node/$node_v/bin;export PATH" > /etc/profile.d/gloabl_node.sh

并退出并重新登录,现在运行which nodenode -v以确认它正在工作。

现在您可以重命名 bin 文件和运行多个版本所需的所有其他配置。 例如:重命名node -> node-14等等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM