[node.js] 루트 (또는 sudo)에서 NVM을 사용할 수 없습니다.

.NET에서 실행할 때 내 애플리케이션이 다른 버전의 NodeJS를 사용한다고 언급했습니다 sudo.

$ node -v
v0.10.23
$ sudo node -v
v0.11.8-pre

v0.11.8-pre로 인해 몇 가지 문제가 발생했기 때문에 사용하고 싶지는 않지만 루트로 변경할 수는 없습니다.

$ sudo nvm use v0.10.23
sudo: nvm: command not found

루트 사용자로부터 nvm을 설치하려고했지만 “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에 있어야 함 )에 복사 하고 모든 사용자가 액세스 할 수 있도록 권한을 설정하는 것 뿐입니다. .

도움이 되었기를 바랍니다!


답변

내 솔루션의 버전 심볼릭 링크 만드는 것입니다 nodenpmI가 사용하고 있습니다를 /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사용할 때 경로에 없다는 것입니다.sudo 입니다.

그래서 입력

$ which nvm

결과는 다음과 같습니다.

/home/abc/mynvm/nvm

지금 다시 시도하십시오 sudo:

sudo /home/abc/mynvm/nvm use v0.10.23

그런 다음 루트 사용자가 0.10.13 버전을 찾을 수 없다는 문제가 발생했다고 가정하지만 다음 오류 메시지를 볼 수 있습니다.


답변

근본적인 이유는 nvm실제 프로그램 이 아니기 때문 입니다. 그것은 사용자에로드되는 bash는 기능이다 .profile, .bashrc또는 … 그래서이 sudo자동으로 대부분의 다른 프로그램처럼은 $ PATH에서 그것을 선택하지 않습니다.

또 다른 노드 버전 관리자입니다 n: https://github.com/tj/n . 실제 프로그램이 즉, 그래서 sudo(만큼 어떠한 해킹없이 $ 경로를 통해 그것을 선택할 것 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


답변

README 에 따르면

nvm을 사용할 때를 사용하여 sudo모듈을 전역 적으로 설치할 필요 가 npm -g없으므로 대신 수행하십시오 sudo npm install -g grunt.npm install -g grunt

sudo npm이 필요하십니까?

제 경우에는 sudo npm run start루트 액세스가 필요한 일부 파일에 대한 액세스가 필요합니다. 이 문제 에 따르면 ,

당신은 사용하지 마십시오 sudo. 대신 nvm이있는 사용자가 파일에 액세스 할 수 있도록 파일을 chmod / chown해야합니다.

요약해서 말하면

nvm의 관리자는 우리가 다음을 수행 할 필요가 없다고 강력하게 믿습니다 sudo.


답변

나도 너의 문제가 있었다. 마침내 나는 그것을 해결했습니다. 내 해결책은 다음과 같습니다.

  1. nvm 및 nodejs를 제거하십시오. 다음은 몇 가지 유용한 링크입니다. Uninstallation of nvm . apt-get을 사용하여 nodejs를 설치 한 경우 명령을 사용하여 제거 할 수 있습니다 apt-get purge nodejs.
  2. 글로벌 nvm을 설치합니다. 이 페이지를 참조하십시오 : nvm global . “Standard nvm은 다중 사용자 또는 루팅 된 환경에서 작업하는 데 어려움이있는 것으로 알려져 있습니다.”

터미널을 다시 시작한 후 명령을 실행할 수 있습니다 sudo nvm ls.


답변

$ sudo bash -ic "nvm use stable; npm -v"
Now using node v6.3.1 (npm v3.10.3)
3.10.3