node.js - ec2 - install node js linux red hat
En EC2: no se ha encontrado el comando sudo node, pero el nodo sin sudo está bien (10)
¿Por qué no usar la ruta absoluta al nodo? Si planea usar un script upstart, necesitará una ruta absoluta de todos modos.
sudo /usr/local/bin/node server.js
Acabo de instalar nodejs en una nueva instancia de micro 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 la ruta actual es
[ec2-user@XXXX ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/opt/aws/bin:/home/ec2-user/bin
pero, el camino 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 traté de editar la ruta de acceso raíz para incluir las rutas al nodo, por lo que "nodo" se ejecuta cuando estoy conectado como root, pero todavía no funciona cuando inicio sesión como usuario ec2 y ejecuto "nodo sudo" .
Necesito esto para instalar npm properfly. ¿Alguna idea sobre cómo incluir la ruta del nodo mientras se ejecuta "sudo node"?
Aquí hay un enfoque que no usa enlaces simbólicos, o requiere root:
$ git clone https://github.com/joyent/node.git
$ cd node
$ mkdir ~/opt
$ export PREFIX=~/opt; ./configure
$ make
$ make install
$ echo ''export PATH=~/opt/bin:${PATH}'' >> ~/.bashrc
Entonces lo hice:
$ git clone https://github.com/isaacs/npm.git
$ cd npm
$ make install
Aquí se tratan los beneficios de no ejecutar el nodo como raíz:
http://increaseyourgeek.wordpress.com/2010/08/18/install-node-js-without-using-sudo/
Está en línea con:
En mi caso, Node se instaló sin el prefijo sudo . Así que el nodo no estaba disponible para el superusuario por lo que no está funcionando el sudo node server
No sé si este es el camino correcto, pero esto es lo que hice ...
sudo su
export PATH=$PATH:/home/ec2-user/local/node/bin
curl http://npmjs.org/install.sh | sh
chown -R ec2-user /home/ec2-user/local/node
exit
Este npm instalado, y ahora puedo instalar cualquier paquete que desee.
Para mí, funcionó para simplemente cambiar la propiedad de la carpeta de nodos de root a ec2-user (iniciada como ec2-user).
(Nota: Creé mi carpeta de nodos en / var / lib /)
sudo chown -R ec2-user /var/lib/node/
Entonces
npm install mongojs
debería funcionar bien (siempre que haya instalado npm ok por supuesto!)
Puede pasar la ruta completa al ejecutable del node
desde el elemento primario (shell no sudo) utilizando which
comando.
sudo `which node`
Sí, es un poco molesto pero puedes arreglarlo con algunos enlaces:
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
Puede haber más, pero eso es todo lo que he encontrado hasta ahora. La falta de nodo-waf hará que algunas instalaciones npm
fallen con un mensaje de error bastante críptico.
intente lo siguiente:
export PATH=$PATH:/usr/local/bin
sudo node --version
sucede porque el ejecutable del nodo no se encuentra en / usr / bin. Entonces sigue los pasos:
- encontrar nodo:
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!
secure_path
/usr/local/bin
a secure_path
en /etc/sudoers
$ sudo visudo
Luego cambia esta línea:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
A:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin