versiones update node manager instalar instalacion creationix como node.js nvm

node.js - update - No se puede usar NVM desde la raíz(o sudo)



update nvm (10)

Segun README

Cuando use nvm no necesita sudo para instalar globalmente un módulo con npm -g , así que en lugar de hacer sudo npm install -g grunt , haga en cambio npm install -g grunt

Necesito sudo npm?

En mi caso, necesito sudo npm run start que necesita acceso a algún archivo que requiera acceso de root. De acuerdo con este tema ,

No usas sudo . En su lugar, debe hacer clic en chmod / chown el archivo para que el usuario que tiene nvm tenga acceso al archivo ;.

En suma

El mantenedor de nvm cree firmemente que no necesitamos sudo : P

He mencionado que mi aplicación usa una versión diferente de NodeJS cuando se ejecuta desde sudo .

$ node -v v0.10.23 $ sudo node -v v0.11.8-pre

Este v0.11.8-pre me causó algunos problemas, por lo que definitivamente no quiero usarlo, pero no puedo cambiarlo por root.

$ sudo nvm use v0.10.23 sudo: nvm: command not found

He intentado instalar nvm desde el usuario root, pero obtuve el error "NVM ya instalado", pero aún no se encuentra nvm cuando se ejecuta desde sudo . Cual es mi problema


He intentado lo mismo en mi máquina donde también tengo nvm y tengo una respuesta ligeramente diferente:

$ sudo node --version sudo: node: command not found

Mi conjetura es que ha instalado el nodo 0.11 fuera de nvm. (A través del gestor de paquetes o incluso desde la fuente )

Por lo tanto, la ejecución del nodo a través de sudo recogerá este nodo independiente en su lugar.

¿Tiene sentido o me equivoco?


Instala nvm globalmente con
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | sudo bash


La razón fundamental es porque nvm no es un programa real. Es una función de bash que se carga en el .profile de usuario, .bashrc o ... Por lo tanto, sudo no lo selecciona automáticamente desde $ PATH como la mayoría de los otros programas.

Un administrador de versiones de nodo alternativo es n : https://github.com/tj/n . Ese es un programa real, por lo que sudo lo recogerá a través de $ PATH sin hacks (siempre que sudo tenga /usr/local/bin en su $ PATH).

sudo npm install -g n # install ''n'' globally which n # should be /usr/local/bin/n sudo n lts # need sudo to switch node versions node --version # v6.10.0 sudo node --version # v6.10.0


La siguiente lista de comandos (fuente: digitalocean ) parece solucionar el problema

n=$(which node); / n=${n%/bin/node}; / chmod -R 755 $n/bin/*; / sudo cp -r $n/{bin,lib,share} /usr/local

El comando anterior es un poco complicado, pero todo lo que hace es copiar cualquier versión del nodo que tenga activo a través de nvm en el directorio /usr/local/ (donde los archivos globales instalados por el usuario deberían estar en un VPS de Linux) y configurar los permisos para que Todos los usuarios pueden acceder a ellos.

¡Espero que esto ayude!


La solución más fácil para esto será simplemente golpear el ejecutable nvm.sh donde sea que esté.

sudo /home/ubuntu/.nvm/nvm.sh install node

Esto funciona bien para mí (asumiendo que esa es la ruta de instalación).

El procedimiento de instalación completo se vería como

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash export NVM_DIR="/home/ubuntu/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && /. "$NVM_DIR/nvm.sh"

Y luego puede ejecutar el comando anterior para golpear el nvm.sh recién instalado


Mi solución es crear enlaces simbólicos a partir de las versiones de node y npm que estoy usando para /usr/local/bin :

sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/node" "/usr/local/bin/node" sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npm" "/usr/local/bin/npm"

Esto hace que npm y node estén disponibles para todos los usuarios.


Su problema es que nvm no está en la ruta cuando usa sudo .

Así que escribe

$ which nvm

y el resultado será algo así como

/home/abc/mynvm/nvm

Inténtalo de nuevo ahora con sudo :

sudo /home/abc/mynvm/nvm use v0.10.23

Supongo que luego se encuentra con el problema de que el usuario root no puede encontrar la versión 0.10.13, pero veamos el siguiente mensaje de error ...


Tuve tu problema también Finalmente he trabajado alrededor de eso. Aquí está mi solución:

  1. Desinstalar nvm y nodejs. Aquí hay algunos enlaces útiles: Desinstalación de nvm . Si instaló nodejs utilizando apt-get, puede desinstalarlo con el comando apt-get purge nodejs .
  2. Instale un nvm global. Vea esta página: github.com/xtuple/nvm . Como dice, "Standard nvm tiene dificultades conocidas para trabajar en entornos multiusuario o enraizados".

Después de reiniciar su terminal, puede ejecutar el comando sudo nvm ls .


$ sudo bash -ic "nvm use stable; npm -v" Now using node v6.3.1 (npm v3.10.3) 3.10.3