127 votes

Sur EC2: commande de noeud sudo introuvable, mais le noeud sans sudo est ok

Je viens d'installer nodejs sur un nouveau micro instance EC2.

Je l'ai installé normalement, ./configurer -> faire -> sudo make install.

Problème: Quand je lance le "nœud" en vertu de l'ec2-utilisateur, il fonctionne parfaitement. Quand je lance "sudo nœud", il échoue.

J'ai trouvé que le nœud est dans:

[ec2-user@XXXX ~]$ whereis node
node: /usr/local/bin/node /usr/local/lib/node

et le chemin d'accès actuel est

[ec2-user@XXXX ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/opt/aws/bin:/home/ec2-user/bin

mais, le sudo chemin est

[root@ip-10-112-222-32 ~]# echo $PATH
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin

ensuite, j'ai essayé de modifier le CHEMIN d'accès racine d'inclure les chemins de nœud, de sorte que le "nœud" fonctionne lorsque je suis connecté en tant que root - mais cela ne fonctionne toujours pas, quand je me connecte en tant que ec2-utilisateur et exécutez la commande "sudo nœud".

J'ai besoin de cette pour installer mnp properfly. Aucune idée sur la façon d'inclure le chemin d'accès du nœud lors de l'exécution de "sudo nœud"?

326voto

Michael Dillon Points 18741

Oui, c'est un peu gênant mais vous pouvez le réparer avec quelques liens:

 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
 

Il y en a peut-être plus, mais c'est tout ce que j'ai rencontré jusqu'à présent. L'absence de noeud-waf entraînera l'échec de certaines installations de npm avec un message d'erreur plutôt cryptique.

33voto

Jack Frost Points 504

J'ai ajouté /usr/local/bin à secure_path en /etc/sudoers

 $ sudo visudo
 

Puis changez cette ligne:

 Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
 

À:

 Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
 

13voto

Cana Points 1415

Pour résoudre votre problème, vous devrez éditer le fichier / etc / sudoers.

Changer la ligne:

 Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
 

Par celui-ci:

 Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
 

5voto

Amro Points 72743
Essayez ce qui suit :

4voto

user1839216 Points 21

Pour moi, cela n'a fonctionné que de changer la propriété du dossier du nœud de la racine à ec2-user (connecté en tant qu'ec2-user).

(Remarque: j'ai créé mon dossier de nœuds dans / var / lib /)

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

ensuite

 npm install mongojs
 

devrait fonctionner correctement (à condition que vous ayez installé NPM, bien sûr!)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X