Почему узел недоступен для всех пользователей с 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

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

su
node -v

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

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

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


person Julien Le Coupanec    schedule 18.08.2014    source источник
comment
потому что только пользователь root может устанавливать различные файлы в системные каталоги, например. /usr/bin и так далее. как обычный пользователь, вы ограничены тем, где вы можете писать что-то, что обычно является вашим собственным домашним каталогом. /home/admin/bin крайне маловероятно, что он находится в $PATH любого другого пользователя.   -  person Marc B    schedule 18.08.2014


Ответы (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
person FoggyDay    schedule 18.08.2014
comment
Для меня это: n=$(какой узел);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/ - person The Anh Nguyen; 16.07.2021