Ich habe gerade nodejs auf einer neuen EC2-Mikroinstanz installiert.
Ich habe es normal installiert, ./configure -> make -> sudo make install.
Problem: Wenn ich "node" unter ec2-user starte, läuft es perfekt. Wenn ich "sudo node" ausführe, schlägt dies fehl.
Ich fand heraus, dass der Knoten in:
[ec2-user@XXXX ~]$ whereis node
node: /usr/local/bin/node /usr/local/lib/node
und der aktuelle Pfad ist
[ec2-user@XXXX ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/opt/aws/bin:/home/ec2-user/bin
aber der sudo weg ist
[root@ip-10-112-222-32 ~]# echo $PATH
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin
Dann habe ich versucht, den Root-Pfad so zu bearbeiten, dass er die Pfade zum Knoten enthält. Daher wird "Knoten" ausgeführt, wenn ich als Root angemeldet bin. Es funktioniert jedoch immer noch nicht, wenn ich mich als ec2-Benutzer anmelde und "sudo node" ausführe. .
Ich brauche dies, um npm Properfly zu installieren. Haben Sie eine Idee, wie Sie den Knotenpfad beim Ausführen von "sudo node" einschließen können?
quelle
Antworten:
Ja, es ist ein bisschen nervig, aber Sie können es mit einigen Links beheben:
Es mag noch mehr geben, aber das ist alles, was mir bisher begegnet ist. Das Fehlen von Node-Waf führt dazu, dass einige
npm
Installationen mit einer eher kryptischen Fehlermeldung fehlschlagen.quelle
node-waf
Ursachennpm rebuild
für Fehler aus. Gibt es einen sauberen Weg, dies zu beheben? Muss ich?/usr/local
existiert nicht. Ich habe allerdings ein Verzeichnis ~ / local erstellt. 3) Nachdem ich jede dieser Codezeilen entfernt/usr
undsudo
aus meiner Konsole ausgeführt hatte, hatte sich nichts geändert.Ich habe
/usr/local/bin
zusecure_path
in/etc/sudoers
Dann ändern Sie diese Zeile:
Zu:
quelle
Dies geschieht, weil die ausführbare Datei des Knotens nicht in / usr / bin gefunden wird. Befolgen Sie also die Schritte:
whereis node
in meinem Fall:
node: /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node
Erstellen Sie eine symbolische Verknüpfung für den Knoten:
sudo ln -s /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node
Es ist fertig!
quelle
sudo ln -s /home/ec2-user/.nvm/versions/node/v8.11.3/bin/npm /usr/bin/npm
als ich versucht habe,npm install
Sudo auf meiner aws ec2-Instanz zu machen, nachdem ich dem LinkWarum nicht den absoluten Pfad zum Knoten verwenden? Wenn Sie ein Upstart-Skript verwenden möchten, benötigen Sie sowieso einen absoluten Pfad.
quelle
ln
Lösungen mit dem System .Versuche Folgendes:
quelle
secure_path
in dersudoers
Datei festgelegt wurden.Sie können den vollständigen Pfad
node
von der übergeordneten Datei (Nicht-Sudo-Shell) mit demwhich
Befehl an die ausführbare Datei übergeben .quelle
Für mich hat es funktioniert, nur den Besitz des Knotenordners von root auf ec2-user (angemeldet als ec2-user) zu ändern.
(Hinweis: Ich habe meinen Knotenordner in / var / lib / erstellt.)
Dann
sollte gut funktionieren (vorausgesetzt du hast npm installiert ok natürlich!)
quelle
Hier ist ein Ansatz, der keine Symlinks verwendet oder root erfordert:
Dann habe ich:
Die Vorteile, Knoten nicht als Root auszuführen, werden hier erläutert:
http://increaseyourgeek.wordpress.com/2010/08/18/install-node-js-without-using-sudo/
Es steht im Einklang mit:
https://github.com/joyent/node/wiki/Installation
quelle
Wie wäre es mit "sudo $ (welcher Knoten)" anstelle von "sudo node"?
quelle
In meinem Fall wurde Node ohne Sudo- Präfix installiert . Daher war der Knoten für den Superuser nicht verfügbar, weshalb er nicht funktioniert
sudo node server
quelle
Ich weiß nicht, ob das der richtige Weg ist, aber das habe ich getan ...
Dies hat npm installiert und ich kann jetzt alle gewünschten Pakete installieren.
quelle