development

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

big-blog 2020. 7. 21. 07:32
반응형

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


방금 새 EC2 마이크로 인스턴스에 nodejs를 설치했습니다.

정상적으로 설치했습니다. ./configure-> make-> sudo make install.

문제 : ec2-user에서 "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

그런 다음 루트 경로를 편집하여 노드에 대한 경로를 포함 시키려고 했으므로 루트로 로그인하면 "node"가 실행되지만 ec2-user로 로그인하여 "sudo node"를 실행해도 여전히 작동하지 않습니다. .

npm properfly를 설치하려면 이것이 필요합니다. "스도 노드"를 실행하는 동안 노드 경로를 포함시키는 방법에 대한 아이디어가 있습니까?


예, 약간 성가 시지만 일부 링크로 해결할 수 있습니다.

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

나를 위해 노드 폴더의 소유권을 루트에서 ec2-user (ec2-user로 로그인)로 변경했습니다.

(참고 : / var / lib /에 노드 폴더를 만들었습니다.)

sudo chown -R ec2-user /var/lib/node/

그때

npm install mongojs

제대로 작동해야합니다 (물론 npm을 설치했다면!)


명령을 node사용하여 부모 (스 도스가 아닌 쉘)에서 실행 파일의 전체 경로를 전달할 수 which있습니다.

sudo `which node`

심볼릭 링크를 사용하지 않거나 루트가 필요한 접근 방식은 다음과 같습니다.

$ git clone https://github.com/joyent/node.git
$ cd node
$ mkdir ~/opt
$ export PREFIX=~/opt; ./configure
$ make
$ make install
$ echo 'export PATH=~/opt/bin:${PATH}' >> ~/.bashrc

그런 다음 :

$ git clone https://github.com/isaacs/npm.git
$ cd npm
$ make install

루트로 노드를 실행하지 않는 이점은 다음과 같습니다.

http://increaseyourgeek.wordpress.com/2010/08/18/install-node-js-without-using-sudo/

인라인 :

https://github.com/joyent/node/wiki/Installation


필자의 경우 Node는 sudo 접두사 없이 설치되었습니다 . 따라서 수퍼 유저가 노드를 사용할 수 없으므로 작동하지 않는 이유sudo node server


"sudo node"대신 "sudo $ (which node)"를 사용하는 것은 어떻습니까?


이것이 올바른 방법인지 모르겠지만 이것이 내가 한 일입니다 ...

sudo su
export PATH=$PATH:/home/ec2-user/local/node/bin
curl http://npmjs.org/install.sh | sh
chown -R ec2-user /home/ec2-user/local/node
exit

이것은 npm을 설치했으며 이제 원하는 패키지를 설치할 수 있습니다.

참고URL : https://stackoverflow.com/questions/4976658/on-ec2-sudo-node-command-not-found-but-node-without-sudo-is-ok

반응형