Почему узел недоступен для всех пользователей с NVM?

#node.js #docker

#node.js #ubuntu #nvm

Вопрос:

Вероятно, это вопрос новичка, но мне интересно, почему, когда я устанавливаю узел с nvm, он доступен только для этого пользователя (он не «глобальный»).

Допустим, я захожу на сервер с пользователем «admin»:

 curl https://raw.githubusercontent.com/creationix/nvm/v0.7.0/install.sh | sh
source ~/.profile

nvm install 0.10.30
nvm use 0.10.30

node -v
# outputs v0.10.30
 

Узел запущен и работает для этого пользователя, но когда я переключаюсь на корень:

 su
node -v
 

Он отображает:

 The program 'node' can be found in the following packages:
 * node
 * nodejs-legacy
Try: apt-get install <selected package>
 

Почему это? Есть ли способ установить узел и сделать его доступным для всех пользователей? (Я не хочу переустанавливать его каждый раз, когда мне это нужно для нового пользователя.)

Комментарии:

1. потому что только пользователь root может устанавливать различные файлы в системные каталоги, например, / usr/ bin и еще много чего. как обычный пользователь, вы ограничены тем, где вы можете писать материал, который обычно является только вашим собственным домашним каталогом. /home/admin/bin маловероятно, что он находится в $PATH любого другого пользователя.

Ответ №1:

Проблема в том, что NVM устанавливает node.js в локальный каталог пользователя и обновляет .profile этого пользователя.

Вот однострочный скрипт, который может скопировать вашу установку в /usr/local/bin, где каждый может использовать node.js:

https://www.digitalocean.com/community/tutorials/how-to-install-node-js-with-nvm-node-version-manager-on-a-vps

 n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local
 

Комментарии:

1. Для меня это: n = $ (какой узел); n = $ {n%/bin/ node}; chmod -R 755 $ n / bin / *; sudo cp -r $ n / {bin, lib,share} /usr/