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
npminstalaciones fallen con un mensaje de error bastante críptico.fuente
node-wafcausasnpm rebuildde error. ¿Existe una forma clara de remediar esto? ¿Realmente necesito?/usr/localno existe. Aunque hice un directorio ~ / local. 3) Después de eliminar/usrysudode cada una de estas líneas de código y ejecutarlas en mi consola, nada había cambiado.He añadido
/usr/local/binasecure_pathen/etc/sudoersLuego cambia esta línea:
A:
fuente
sucede porque el ejecutable del nodo no se encuentra en / usr / bin. Entonces sigue los pasos:
whereis nodeen mi caso:
node: /home/<my_user>/.nvm/versions/node/v8.9.4/bin/nodehacer 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/npmlo que estaba tratando de hacer sudonpm installen 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
lnsoluciones.prueba lo siguiente:
fuente
secure_pathestablecido en elsudoersarchivo.Puede pasar la ruta completa al
nodeejecutable desde el padre (shell no sudo) usando elwhichcomando.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 serverfuente
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