새 EC2 마이크로 인스턴스에 nodejs를 설치했습니다.
나는 정상적으로 설치했다. ./configure-> make-> sudo make install.
문제점 : ec2-user에서 “node”를 실행하면 완벽하게 실행됩니다. “sudo node”를 실행하면 실패합니다.
노드가 다음 위치에 있음을 알았습니다.
[ec2-user@XXXX ~]$ whereis node
node: /usr/local/bin/node /usr/local/lib/node
현재 경로는
[ec2-user@XXXX ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/opt/aws/bin:/home/ec2-user/bin
그러나 sudo 경로는
[root@ip-10-112-222-32 ~]# echo $PATH
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin
그런 다음 노드 경로를 포함하도록 루트 PATH를 편집하려고했기 때문에 루트로 로그인하면 “node”가 실행되지만 ec2-user로 로그인하고 “sudo node”를 실행하면 여전히 작동하지 않습니다. .
npm properfly를 설치하려면 이것이 필요합니다. “sudo node”를 실행하는 동안 노드 경로를 포함하는 방법에 대한 아이디어가 있습니까?
답변
예, 약간 성가 시지만 일부 링크로 해결할 수 있습니다.
sudo ln -s /usr/local/bin/node /usr/bin/node
sudo ln -s /usr/local/lib/node /usr/lib/node
sudo ln -s /usr/local/bin/npm /usr/bin/npm
sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf
더 많을 수도 있지만 그게 내가 지금까지 만난 전부입니다. node-waf가 없으면 일부 npm
설치가 다소 알 수없는 오류 메시지와 함께 실패 할 수 있습니다 .
답변
나는 추가 /usr/local/bin
로 secure_path
에/etc/sudoers
$ sudo visudo
그런 다음이 줄을 변경합니다.
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
에:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
답변
노드 실행 파일이 / usr / bin에 없기 때문에 발생합니다. 따라서 다음 단계를 따르십시오.
- 노드 찾기 :
whereis node
나의 경우에는: node: /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node
-
노드에 대한 심볼릭 링크를 만듭니다.
sudo ln -s /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node
끝났다!
답변
노드에 대한 절대 경로를 사용하지 않는 이유는 무엇입니까? upstart 스크립트를 사용하려는 경우 어쨌든 절대 경로가 필요합니다.
sudo /usr/local/bin/node server.js
답변
다음을 시도하십시오.
export PATH=$PATH:/usr/local/bin
sudo node --version
답변
명령을 node
사용하여 상위 (비 -sudo 셸)에서 실행 파일의 전체 경로를 전달할 수 which
있습니다.
sudo `which node`
답변
저에게는 노드 폴더의 소유권을 루트에서 ec2-user (ec2-user로 로그인)로 변경하는 작업 만했습니다.
(참고 : / var / lib /에 노드 폴더를 만들었습니다.)
sudo chown -R ec2-user /var/lib/node/
그때
npm install mongojs
잘 작동합니다 (물론 npm을 설치했다면 괜찮습니다!)