[node.js] EC2 : sudo node 명령을 찾을 수 없지만 sudo가없는 노드는 정상입니다.

새 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/binsecure_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에 없기 때문에 발생합니다. 따라서 다음 단계를 따르십시오.

  1. 노드 찾기 :

whereis node

나의 경우에는: node: /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node

  1. 노드에 대한 심볼릭 링크를 만듭니다.

    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을 설치했다면 괜찮습니다!)