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/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
나를 위해 노드 폴더의 소유권을 루트에서 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을 설치했으며 이제 원하는 패키지를 설치할 수 있습니다.
'development' 카테고리의 다른 글
수학 연산자 *, /, +,-, ^를 사용하여 0이 아닌 숫자를 1로 변환 할 수 있습니까? (0) | 2020.07.21 |
---|---|
jQuery가 태그 이름을 제공 할 수 있습니까? (0) | 2020.07.21 |
div 수직 정렬 중간 CSS (0) | 2020.07.21 |
RecyclerView를 닫으려면 스 와이프합니다. (0) | 2020.07.21 |
WebView에서 줌 컨트롤을 사용하고 핀치 줌을 사용하는 방법은 무엇입니까? (0) | 2020.07.21 |