我已经提到我的应用程序在从sudo
.
$ node -v
v0.10.23
$ sudo node -v
v0.11.8-pre
这个v0.11.8-pre给我带来了一些问题,所以我绝对不想使用它,但是我不能为 root 更改它。
$ sudo nvm use v0.10.23
sudo: nvm: command not found
我尝试从 root 用户安装 nvm,但收到错误“NVM 已安装”,但从sudo
. 我的问题是什么?
下面的命令列表(来源:digitalocean)似乎解决了这个问题
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 上)并设置权限,以便所有用户都可以访问它们.
希望这可以帮助!
我的解决方案是从我正在使用node
的版本创建符号链接:npm
/usr/local/bin
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/node" "/usr/local/bin/node"
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npm" "/usr/local/bin/npm"
这使所有用户都可以使用npm
。node
根本原因是因为nvm
不是真正的程序。它是一个 bash 函数,可以在用户的 , 或 ... 中加载,因此不会像大多数其他程序一样自动从 $PATH 中.profile
获取.bashrc
它sudo
。
另一种节点版本管理器是n
:https ://github.com/tj/n 。那是一个真正的程序,因此sudo
将通过 $PATH 拾取它而无需任何黑客攻击(只要sudo
在/usr/local/bin
其 $PATH 中有)。
sudo npm install -g n # install 'n' globally
which n # should be /usr/local/bin/n
sudo n lts # need sudo to switch node versions
node --version # v6.10.0
sudo node --version # v6.10.0
您的问题是,nvm
当您使用sudo
.
所以输入
$ which nvm
结果会是这样的
/home/abc/mynvm/nvm
现在再试一次sudo
:
sudo /home/abc/mynvm/nvm use v0.10.23
我假设您随后遇到了 root 用户找不到 0.10.13 版本的问题,但让我们看看下一条错误消息...
我也有你的问题。最后我已经解决了它。这是我的解决方案:
apt-get purge nodejs
。重新启动终端后,您可以运行命令sudo nvm ls
。
$ sudo bash -ic "nvm use stable; npm -v"
Now using node v6.3.1 (npm v3.10.3)
3.10.3
我在我的机器上也试过同样的方法,但nvm
我的反应略有不同:
$ sudo node --version
sudo: node: command not found
我的猜测是您在 nvm 之外安装了节点 0.11。(通过包管理器甚至源代码)
因此,通过 sudo 运行节点会选择这个独立节点。
这有意义还是我错了?
通过扩展@SimpleJ 解决方案,我创建了一个有用的 bash 脚本,可用于将所有二进制文件从实际的 nvm bin 目录链接到/usr/local/bin
:
#!/bin/bash
. ~/.nvm/nvm.sh
DIR=$NVM_DIR/versions/node/$(nvm version)/bin/*
DEST=/usr/local/bin
for filename in $DIR; do
filename=$(basename $filename)
DEST_FILE=$DEST/$filename
echo "Copying $filename to $DEST_FILE"
sudo ln -sf "$NVM_DIR/versions/node/$(nvm version)/bin/$filename" "$DEST_FILE"
done
我只想从 NVM API 安装最新的 node-js,而不需要额外的包清除版本。所以我一直在寻找 SUDO nvm install-latest-npm。Mb 这对你有用 - 它确实对我有用,而无需安装/删除任何 apts。(显然将 YOUR_USER_DIRECTORY 更改为适合您系统的内容)
sudo /home/YOUR_USER_DIRECTORY/.nvm/nvm.sh | nvm install-latest-npm
最简单的解决方案可能是直接点击 nvm.sh 可执行文件。
sudo /home/ubuntu/.nvm/nvm.sh install node
这对我来说很好(假设这是安装路径)。
完整的安装过程看起来像
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
export NVM_DIR="/home/ubuntu/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
然后你可以运行上面的命令来点击新安装的 nvm.sh
全局安装 nvm
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | sudo bash