programing

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

showcode 2023. 5. 25. 22:15
반응형

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

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

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

문제:ec2-user에서 "노드"를 실행하면 완벽하게 실행됩니다."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를 편집하여 노드에 대한 경로를 포함하려고 했습니다. 따라서 "노드"는 root로 로그인할 때 실행되지만 ec2-user로 로그인하고 "sudo node"를 실행해도 작동하지 않습니다.

나는 npm을 제대로 설치하기 위해 이것이 필요합니다."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

더 있을지도 모르지만 지금까지 만난 것은 그것뿐입니다.노드 웨이퍼가 부족하면 일부 원인이 됩니다.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에 없기 때문에 발생합니다.따라서 다음 단계를 수행합니다.

  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

끝났어요!

노드에 대한 절대 경로를 사용하는 것이 어떻습니까?시작 스크립트를 사용할 계획이라면 어쨌든 절대 경로가 필요합니다.

sudo /usr/local/bin/node server.js

다음을 시도해 보십시오.

export PATH=$PATH:/usr/local/bin
sudo node --version

로의 전체 경로를 통과할 수 있습니다.node상위(비 sudo 셸)에서 실행 파일 사용which지휘권

sudo `which node`

저는 노드 폴더의 소유권을 root에서 ec2-user(ec2-user로 로그인)로 변경하는 작업만 했습니다.

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

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

그리고나서

npm install mongojs

잘 작동해야 합니다(물론 npmok을 설치했다면!)

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

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

$ 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

제 경우 노드는 sudo 접두사 없이 설치되었습니다.슈퍼유저에 대해 노드를 사용할 수 없어서 작동하지 않습니다.sudo node server

루트로 입력합니다.

sudo su

그런 다음 표준 단계를 수행합니다.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
. ~/.nvm/nvm.sh
nvm install node
node -e "console.log('Running Node.js ' + process.version)"

이것이 제가 비슷한 문제를 해결하기 위해 한 일입니다.참고: 스냅을 통해 노드를 설치했습니다.

1단계: 스냅을 통해 노드 설치

sudo snap install node --classic

2단계: 노드가 설치된 위치 찾기

whereis node

내 경우에는

/snap/bin/node.npm 
/snap/bin/node.npx 
/snap/bin/node.yarn 
/snap/bin/node 
/snap/bin/node.yarnpkg

3단계: 노드, npm, npx 및 실에 대한 심볼 링크 생성

sudo ln -s /snap/bin/yarn /usr/bin/yarn
sudo ln -s /snap/bin/node /usr/bin/node
sudo ln -s /snap/bin/npm /usr/bin/npm

마지막으로 모든 사용자, 심지어 sudo 그룹도 노드에 액세스할 수 있습니다.

sudo node

모든 사용자, unbuntu, debian을 위한 snap을 통한 노드 설치

위의 답변에 언급된 모든 것을 시도했지만 아무 것도 되지 않았습니다.아마도 심볼릭 링크와 관련된 개념에 대한 이해가 부족했기 때문일 것입니다.나는 nvm을 사용하지 않아 문제를 해결했습니다.방금 새 ec2 인스턴스를 생성했고 nvm을 설치하지 않았습니다.대신 노드와 npm을 설치했습니다.

sudo apt update
sudo apt install nodejs npm

그리고 이것이 저를 위해 해냈습니다.

노드 환경을 이미 설치한 경우 이 명령을 인스턴스에 붙여 넣으면 노드가 사용자 디렉토리에 연결됩니다.그리고 sudo와 함께 노드를 사용할 수 있습니다.

    sudo ln -s "$(which node)" "/usr/local/bin/node"
    sudo ln -s "$(which npm)" "/usr/local/bin/npm"

이게 옳은 방법인지는 모르겠지만 제가 한 일은...

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

반응형