Acabo de instalar nodejs en una nueva micro instancia EC2.
Lo instalé normalmente, ./configure -> make -> sudo make install.
Problema: cuando ejecuto "node" en ec2-user, funciona perfectamente. Cuando ejecuto "sudo node", falla.
Descubrí que el nodo está en:
[ec2-user@XXXX ~]$ whereis node
node: /usr/local/bin/node /usr/local/lib/node
y el camino actual es
[ec2-user@XXXX ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/opt/aws/bin:/home/ec2-user/bin
pero, la ruta de sudo es
[root@ip-10-112-222-32 ~]# echo $PATH
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin
luego intenté editar la RUTA raíz para incluir las rutas al nodo, por lo que "nodo" se ejecuta cuando inicio sesión como raíz, pero aún no funciona cuando inicio sesión como ec2-user y ejecuto "sudo nodo" .
Necesito esto para instalar npm correctfly. ¿Alguna idea de cómo incluir la ruta del nodo mientras se ejecuta "sudo node"?
node.js
bash
amazon-ec2
sudo
foobar
fuente
fuente
Respuestas:
Sí, es un poco molesto pero puedes solucionarlo con algunos enlaces:
Puede que haya más, pero eso es todo lo que he encontrado hasta ahora. La falta de node-waf hará que algunas
npm
instalaciones fallen con un mensaje de error bastante críptico.fuente
node-waf
causasnpm rebuild
de error. ¿Existe una forma clara de remediar esto? ¿Realmente necesito?/usr/local
no existe. Aunque hice un directorio ~ / local. 3) Después de eliminar/usr
ysudo
de cada una de estas líneas de código y ejecutarlas en mi consola, nada había cambiado.He añadido
/usr/local/bin
asecure_path
en/etc/sudoers
Luego cambia esta línea:
A:
fuente
sucede porque el ejecutable del nodo no se encuentra en / usr / bin. Entonces sigue los pasos:
whereis node
en mi caso:
node: /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node
hacer un enlace simbólico para el nodo:
sudo ln -s /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node
¡Está hecho!
fuente
sudo ln -s /home/ec2-user/.nvm/versions/node/v8.11.3/bin/npm /usr/bin/npm
lo que estaba tratando de hacer sudonpm install
en mi instancia de aws ec2 después de seguir el enlace¿Por qué no utilizar la ruta absoluta al nodo? Si planea utilizar un script advenedizo, de todos modos necesitará una ruta absoluta.
fuente
ln
soluciones.prueba lo siguiente:
fuente
secure_path
establecido en elsudoers
archivo.Puede pasar la ruta completa al
node
ejecutable desde el padre (shell no sudo) usando elwhich
comando.fuente
Para mí, funcionó simplemente para cambiar la propiedad de la carpeta del nodo de root a ec2-user (iniciado sesión como ec2-user).
(Nota: creé mi carpeta de nodo en / var / lib /)
Luego
debería funcionar bien (siempre que haya instalado npm ok, por supuesto!)
fuente
Aquí hay un enfoque que no usa enlaces simbólicos ni requiere root:
Entonces lo hice:
Los beneficios de no ejecutar el nodo como root se discuten aquí:
http://increaseyourgeek.wordpress.com/2010/08/18/install-node-js-without-using-sudo/
Está en línea con:
https://github.com/joyent/node/wiki/Installation
fuente
¿Qué tal usar "sudo $ (qué nodo)" en lugar de "sudo nodo"?
fuente
En mi caso, Node se instaló sin el prefijo sudo . Entonces el nodo no estaba disponible para el superusuario, por eso no funciona
sudo node server
fuente
No sé si esta es la forma correcta, pero esto es lo que hice ...
Esto instaló npm, y ahora puedo instalar cualquier paquete que desee.
fuente