En EC2: el comando sudo node no se encuentra, pero el nodo sin sudo está bien


Acabo de instalar nodejs en una nueva instancia EC2 micro.

Lo instalé normalmente,./ configure - > make - > sudo make install.

Problema: Cuando corro "node" bajo ec2-user, se ejecuta perfectamente. Cuando corro "nodo sudo", 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 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 raíz para incluir las rutas al nodo, por lo que "nodo" se ejecuta cuando estoy conectado en como root - pero todavía no funcionará cuando inicie sesión como ec2-user y ejecute "sudo node".

Necesito esto para instalar npm properfly. ¿Alguna idea sobre cómo incluir la ruta del nodo mientras se ejecuta "sudo node"?

Author: devnull, 0000-00-00

10 answers

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

Podría haber más, pero eso es todo lo que he encontrado hasta ahora. La falta de node-waf causará que algunas instalaciones de npm fallen con un mensaje de error bastante críptico.

 300
Author: Michael Dillon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-21 05:38:00

He añadido /usr/local/bin a {[4] {} en[5]}

$ 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
 27
Author: Jack Frost,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-02 19:10:15

Sucede porque el ejecutable de nodo no se encuentra en /usr/bin. Así que sigue los pasos:

  1. nodo de búsqueda:

whereis node

En mi caso: node: /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node

  1. Haga 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!

 9
Author: jefferson ferreira palheta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-03 22:38:54

Intente lo siguiente:

export PATH=$PATH:/usr/local/bin
sudo node --version
 5
Author: Amro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-12 14:51:05

¿Por qué no usar la ruta absoluta al nodo? Si planea usar un script advenedizo, necesitará una ruta absoluta de todos modos.

sudo /usr/local/bin/node server.js
 5
Author: Shripad Krishna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-16 06:03:40

Para mí, funcionó para cambiar la propiedad de la carpeta del nodo de raíz a ec2-user (conectado como ec2-user).

(Nota: He creado 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!)

 4
Author: user1839216,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-26 11:23:59

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

Los beneficios de no ejecutar node 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

 3
Author: Jack Murphy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-21 04:48:36

Puede pasar la ruta completa al ejecutable node desde el padre (shell no sudo) usando el comando which.

sudo `which node`
 3
Author: Pavel Zubkou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-09 09:33:56

En mi caso, el nodo se instaló sin el prefijo sudo. Así nodo no estaba disponible para el superusuario que por qué no está funcionando sudo node server

 1
Author: shubham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-26 04:47:32

No se 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

Esto instaló npm, y ahora puedo instalar cualquier paquete que quiera.

 -1
Author: bdavis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-22 20:22:11