Je viens d'installer nodejs sur une nouvelle micro-instance EC2.
Je l'ai installé normalement, ./configure -> make -> sudo make install.
Problème: lorsque j'exécute "node" sous ec2-user, il fonctionne parfaitement. Lorsque j'exécute "sudo node", cela échoue.
J'ai découvert que le nœud est dans:
[ec2-user@XXXX ~]$ whereis node
node: /usr/local/bin/node /usr/local/lib/node
et le chemin actuel est
[ec2-user@XXXX ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/opt/aws/bin:/home/ec2-user/bin
mais, le chemin sudo est
[root@ip-10-112-222-32 ~]# echo $PATH
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin
puis j'ai essayé de modifier le PATH racine pour inclure les chemins vers le nœud, donc "node" s'exécute lorsque je suis connecté en tant que root - mais cela ne fonctionnera toujours pas lorsque je me connecte en tant qu'utilisateur ec2 et lance "sudo node" .
J'en ai besoin pour installer npm properfly. Une idée sur la façon d'inclure le chemin du nœud lors de l'exécution de "sudo node"?
node.js
bash
amazon-ec2
sudo
foobar
la source
la source
Réponses:
Oui, c'est un peu ennuyeux mais vous pouvez le réparer avec quelques liens:
Il y en a peut-être plus, mais c'est tout ce que j'ai rencontré jusqu'à présent. Le manque de node-waf entraînera l'
npm
échec de certaines installations avec un message d'erreur plutôt cryptique.la source
node-waf
causesnpm rebuild
d'erreur. Y a-t-il un moyen propre de remédier à cela? Est ce que j'ai besoin de?/usr/local
n'existe pas. J'ai cependant créé un répertoire ~ / local. 3) Après avoir supprimé/usr
etsudo
de chacune de ces lignes de code et les avoir exécutées via ma console, rien n'avait changé.J'ai ajouté
/usr/local/bin
àsecure_path
en/etc/sudoers
Puis changez cette ligne:
À:
la source
cela se produit parce que l'exécutable du nœud n'est pas trouvé dans / usr / bin. Alors suivez les étapes:
whereis node
dans mon cas:
node: /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node
créer un lien symbolique pour le nœud:
sudo ln -s /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node
C'est fait!
la source
sudo ln -s /home/ec2-user/.nvm/versions/node/v8.11.3/bin/npm /usr/bin/npm
comme j'essayais de faire sudonpm install
sur mon instance aws ec2 après avoir suivi le lienPourquoi ne pas utiliser le chemin absolu vers le nœud? Si vous prévoyez d'utiliser un script upstart, il vous faudra de toute façon un chemin absolu.
la source
ln
solutions le font.essayez ce qui suit:
la source
secure_path
définies dans lesudoers
fichier.Vous pouvez passer le chemin complet de l'
node
exécutable à partir du parent (shell non sudo) à l'aide de lawhich
commande.la source
Pour moi, cela a fonctionné pour simplement changer la propriété du dossier de nœud de racine à ec2-user (connecté en tant qu'ec2-user).
(Remarque: j'ai créé mon dossier de nœuds dans / var / lib /)
ensuite
devrait fonctionner correctement (à condition que vous ayez installé npm bien sûr!)
la source
Voici une approche qui n'utilise pas de liens symboliques ou qui nécessite root:
Puis j'ai fait:
Les avantages de ne pas exécuter node en tant que root sont discutés ici:
http://increaseyourgeek.wordpress.com/2010/08/18/install-node-js-without-using-sudo/
Il est en ligne avec:
https://github.com/joyent/node/wiki/Installation
la source
Que diriez-vous d'utiliser "sudo $ (quel nœud)" au lieu de "sudo node"?
la source
Dans mon cas, Node a été installé sans préfixe sudo . Le nœud n'était donc pas disponible pour le super-utilisateur, c'est pourquoi il ne fonctionne pas
sudo node server
la source
Je ne sais pas si c'est la bonne façon, mais c'est ce que j'ai fait ...
Cela a installé npm, et je peux maintenant installer tous les packages que je veux.
la source