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"?
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.
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
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:
- nodo de búsqueda:
whereis node
En mi caso: node: /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node
-
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!
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
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
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!)
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:
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`
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
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.
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