sudo: npm: comando no encontrado

202

Estoy tratando de actualizar a la última versión del nodo. Estoy siguiendo las instrucciones en http://davidwalsh.name/upgrade-nodejs

Pero cuando lo hago:

sudo npm install -g n

Me sale el error:

sudo: npm: command not found

npm funciona sin sudo. Cuando lo hago:

whereis node

Veo:

node: /usr/bin/node /usr/lib/node /usr/bin/X11/node /usr/local/node

Corriendo:

which npm

Muestra:

/usr/local/node/bin/npm

Probé la solución en https://stackoverflow.com/a/5062718/1246159

Pero sigo recibiendo el mismo error. También miré el archivo / etc / sudoers y la línea relevante es:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

Esto me parece bien. ¿Cómo puedo hacer que NPM funcione con el comando sudo?

marca
fuente
44
¿Esto funciona? sudo /usr/bin/npm install -g n
robertklep
2
¿Puedes intentar reinstalar el nodo? Parece que eliminaste npm.
Jeff Sloyer
1
Es posible que haya agregado /usr/local/node/bina su $PATH, pero npmdebe estar instalado en /usr/local/bin. El primer directorio no está en el secure_pathque explica por qué sudono puede encontrarlo.
robertklep
1
Utilizando nvmen Ubuntu aquí, con el comentario de @robertklep, lo intenté sudo /home/${user}/.nvm/version/node/${version}/bin/npm instally funcionó.
Stav Pan Geffen
2
Resolvió mi problema reinstalando desde el siguiente paquete. nodejs.org/en/download
Marghoob Suleman el

Respuestas:

125

El archivo npm debería estar en /usr/local/bin/npm. Si no está allí, instale node.js nuevamente con el paquete en su sitio web . Esto funcionó en mi caso.

inga
fuente
Gracias. Si instala el nodo en otras unidades de datos, donde el sistema operativo no está instalado, no puede encontrar esta ruta.
Hardik Darji
1
en el caso de mac os con homebrew ... dos pasos a seguir es (1) qué nodo (2) qué npm debe estar en / usr / local / bin (donde homebrew instala / symlinks node + npm) ... para resolver ... intente (1) brew doctor (2) brew reinstalar nodo si todavía le da problemas ... verifique su ruta (echo $ PATH). debe tener varias ubicaciones de bin que apuntan a varias instalaciones de nodos ... si ese es el caso ... limpieza (como en hacerlo más ordenado) su ~ / .bashrc / ~ / .bash_profile, entonces / usr / local / bin está ahí cargado sin otro que apunta a una instalación de nodo aleatorio.
Jimmy MG Lim
3
Esta es una solución parcial. El problema ocurre cuando instala manualmente el nodo. Debe vincular cada binario instalado a / usr / bin o / usr / local / bin. Establecer la ruta en bashrc de la raíz no funcionará ya que no se lee durante sudo, por lo tanto, esta es la única forma en que parece a menos que instale el paquete.
shrimpwagon
como dijo @shrimpwagon, la parte inferior de las instrucciones del manual le dice que vincule "sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / node / usr / bin / node sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / npm / usr / bin / npm sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / npx / usr / bin / npx "
James Nelson
170

Tenía que hacer

sudo apt-get install npm

Eso funcionó para mí.

Velocibadgery
fuente
66
Es difícil entender lo que quieres expresar.
pequeña luz del sol el
44
Esto está fuera de fecha. Lo que funcionó para mí fueron estos comandos que encontré aquí: github.com/nodesource/distributions#debinstall # Uso de Ubuntu curl -sL deb.nodesource.com/setup_5.x | sudo -E bash - sudo apt-get install -y nodejs # Usando Debian, como root curl -sL deb.nodesource.com/setup_5.x | bash - apt-get install -y nodejs
Hamed
44
@tinysunlight No estoy seguro de lo que no está claro. La operación dice que falta el comando npm. Este comando instala el comando npm.
Velocibadgery
77
Esta no es la respuesta correcta a la pregunta porque es obvio por la operación que npmya está instalada pero no es accesible cuando se invoca a través de sudo. Con esta solución, reinstala npm que ya existe. Esto es combatir los síntomas en lugar de encontrar la causa. Entiendo que esto puede corregir las cosas rotas para algunas personas, pero es engañoso, estar así.
Dominic
44
Cuando instalé el nodo usando NVM en Ubuntu 18.10, sudo no reconoce npm como un comando. sudo apt-get install npmtrabajó para mi.
AlienKevin
91

Para los usuarios de MAC, los siguientes pasos funcionaron para mí.

$ brew update
$ brew uninstall node
$ brew install node
$ brew postinstall 
Gao
fuente
55
El brew uninstall nodeno funcionó para mí, pero continuó con la brew install nodee brew postinstally solucionado el problema. Gracias
Trevor
2
¿Qué hace brew postinstallexactamente?
Oliver D
en Homebrew la versión 2.2.14 brew postinstalles redundante
Arslan Khan
63

Yo tuve el mismo problema; Aquí están los comandos para solucionarlo:

  • 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
Vasanth Umapathy
fuente
2
Trabajó para mí en CentOS 7
hirikarate
44
Me funcionó Ubuntu 16.04.1 LTS. Uso NVM, por lo que la primera ruta fue a donde NVM instaló el nodo y npm (la ruta incluye una versión %HOME%/.nvm/versions/node/v7.4.0/bin/npm). Lamentable que voy a tener que hacer referencia a esta respuesta de cada actualización vez que el uso de NVM, debido a la forma en la versión en la trayectoria cambiará
Kas
1
¡Esto también lo resolvió para mí! Publicado originalmente en Stack Overflow: en EC2: no se encontró el comando sudo node, pero el nodo sin sudo está bien
Dominic
2
@kas sudo ln -s $(whereis node) /usr/bin/node Y así sucesivamente. en tu perfil bash.
Aravind Voggu
Me funcionó en la instancia de AWS ec2.
Chirag Purohit
26

ADVERTENCIA (editar)

Hacer una chmod 777es una solución bastante radical. Pruebe estos primero, uno a la vez, y deténgase cuando uno funcione:

  • $ sudo chmod -R 777 /usr/local/lib/node_modules/npm
  • $ sudo chmod -R 777 /usr/local/lib/node_modules
  • $ sudo chmod g+w /usr/local/lib
  • $ sudo chmod g+rwx /usr/local/lib

$ brew postinstall node es la única parte de instalación donde tendría un problema

Permission denied - /usr/local/lib/node_modules/npm/.github

Asique

// !! READ EDIT ABOVE BEFORE RUNNING THIS CODE !!
$ sudo chmod -R 777 /usr/local/lib
$ brew postinstall node

y viola, npm ahora está vinculado

$ npm -v
3.10.10

Extra

Si utilizó -R 777el lib mi recomendación sería la creación de archivos y directorios anidados a un ajuste por defecto:

  • PS find /usr/local/lib -type f -print -exec chmod 644 {} \;
  • PS find /usr/local/lib -type d -print -exec chmod 755 {} \;
  • PS chmod /usr/local/lib 755
Jacksonkr
fuente
3
@Jacksonkr ..... ¿acabas de recomendar chmoding 777 a toda la carpeta local / lib?
sfratini
¿Cuál chmoddebería ser este directorio?
tim_xyz
1
@tim_xyz drwxr-xr-xson los valores predeterminados para lib. Dicho esto, NO use la función recursiva -Ral volver a configurar la carpeta.
Jacksonkr
¡Gracias! sudo chmod -R 777 / usr / local / lib / node_modules funcionó para mí
Hisagr
18

Tuve que hacer lo siguiente:

  1. brew update
  2. brew uninstall node
  3. Visite https://nodejs.org/en/ descargue el archivo
  4. Instala el archivo descargado
maudulus
fuente
2
Usted es un héroe.
Abdulaziz Noor
8

Para los usuarios de CentOS, esto funciona para mí:

sudo yum install npm
江南 消夏
fuente
1
El problema con este enfoque es que en Fedora, por ejemplo, está muy desactualizado en dnf / yum repos
ACV
2
En CentOS 7, primero debe habilitar el repositorio EPEL:yum install epel-release; yum install npm
hudolejev
8

Para instalar paquetes npm globalmente con permiso sudo, /usr/bin/npmdebe estar disponible. Si npmexiste en algún otro directorio, cree un enlace suave como:

sudo ln -s /usr/local/bin/npm /usr/bin/npm

Funciona en Fedora 25, node8.0.0 y npm5.0.0

Prakash Ramasamy
fuente
6

En macOS, esto funcionó para mí:

brew reinstall node
Friederbluemle
fuente
1
Lo siento, acabo de darme cuenta de que la pregunta está etiquetada unix, pero aún podría ser útil, ya que es el principal resultado de búsqueda de Google para "comando macos npm no encontrado"
friederbluemle
5

Para debian después de instalar el nodo, ingrese

curl -k -O -L https://npmjs.org/install.sh    
ln -s /usr/bin/nodejs /usr/bin/node  
sh install.sh
Shaharyar Zafar
fuente
5

Si instaló node / npm con nvm, el archivo de configuración del entorno nvm debe ejecutarse antes de poder usar cualquiera de los paquetes.

Esto generalmente se encuentra en ~ / .nvm / nvm.sh.

Para ejecutar esto automáticamente, incluya:

source ~/.nvm/nvm.sh

en el archivo .bash_profile para su usuario

Si luego desea usar sudo con ese usuario, asegúrese de incluir el parámetro -i para que sudo establezca el entorno del usuario. p.ej

sudo -iu jenkins npm install grunt-cli
Garreth McDaid
fuente
4

simplemente reinstalar.

En RHEL, CentOS y Fedora

sudo yum remove nodejs npm
sudo dnf remove nodejs npm   [On Fedora 22+ versions]

luego

yum -y install nodejs npm
dnf -y install nodejs npm   [On Fedora 22+ versions]

¡fácil! ... ¡tanto node como npm funcionan como un encanto ahora!

Brian Sanchez
fuente
3

Resolví este problema por

apt-get install npm2deb
Игорь Демянюк
fuente
1
cual es esta respuesta npm2deb es una tercera fiesta
Beau Bouchard
1
no es del todo "confiable", ya que en terceros puede verse más comprometido que desde npm directamente desde la fuente. No sé nada acerca de npm2deb pero pienso si desea utilizarlo en su empresa, que probablemente sería estricto en cuanto a la auditoría que
Kyle Calica-St
Es obvio para todos.
Игорь Демянюк
1

Tuve el mismo problema, la razón de esto fue que el administrador de paquetes npm no se instaló al instalar el nodo. Esto fue causado por el siguiente error: en el proceso de instalación hay un paso llamado "Configuración personalizada", aquí tiene la opción de elegir uno de los siguientes: 1) Node.js runtime (Esto está seleccionado por defecto). 2) npm package manager 3) Accesos directos a la documentación en línea. 4) Añadir a la ruta. Si continúa como está, el administrador de paquetes npm no se instalará y, por lo tanto, obtendrá el error.

Solución: seleccione el administrador de paquetes npm cuando obtenga estas opciones. Esto funcionó para mí.

Saurabh Shetty
fuente
1

Si ha descargado el paquete de nodos y extraído en algún lugar /opt, simplemente puede crear un enlace simbólico en su interior /usr/local/bin.

/usr/local/bin/npm -> /opt/node-v4.6.0-linux-x64/bin/npm
/usr/local/bin/node -> /opt/node-v4.6.0-linux-x64/bin/node
mipasov
fuente
1

También tuve el mismo problema en Homestead y lo intenté de muchas maneras. Lo intenté con

sudo apt-get install nodejs

Obtuve el siguiente error:

The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
       Depends: node-ansi (>= 0.3.0-2) but it is not going to be installed
       Depends: node-ansi-color-table but it is not going to be installed
       Depends: node-archy but it is not going to be installed
       Depends: node-block-stream but it is not going to be installed
       Depends: node-fstream (>= 0.1.22) but it is not going to be installed
       Depends: node-fstream-ignore but it is not going to be installed
       Depends: node-github-url-from-git but it is not going to be installed
       Depends: node-glob (>= 3.1.21) but it is not going to be installed
       Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
       Depends: node-inherits but it is not going to be installed
       Depends: node-ini (>= 1.1.0) but it is not going to be installed
       Depends: node-lockfile but it is not going to be installed
       Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
       Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
       Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
       Depends: node-gyp (>= 0.10.9) but it is not going to be installed
       Depends: node-nopt (>= 3.0.1) but it is not going to be installed
       Depends: node-npmlog but it is not going to be installed
       Depends: node-once but it is not going to be installed
       Depends: node-osenv but it is not going to be installed
       Depends: node-read but it is not going to be installed
       Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
       Depends: node-request (>= 2.25.0) but it is not going to be installed
       Depends: node-retry but it is not going to be installed
       Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
       Depends: node-semver (>= 2.1.0) but it is not going to be installed
       Depends: node-sha but it is not going to be installed
       Depends: node-slide but it is not going to be installed
       Depends: node-tar (>= 0.1.18) but it is not going to be installed
       Depends: node-underscore but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Finalmente lo intenté con

sudo apt-get dist-upgrade

Funcionó bien.

root@homestead:/usr/local/bin# npm -v
3.10.10

root@homestead:/usr/local/bin# node -v
v6.13.0
Thowfeek
fuente
1

Trabaja para mí Resolver errores de permisos EACCES al instalar paquetes globalmente

Para minimizar la posibilidad de errores de permisos, puede configurar npm para usar un directorio diferente. En este ejemplo, creará y usará un directorio oculto en su directorio de inicio.

Copia de seguridad de tu computadora. En la línea de comando, en su directorio de inicio, cree un directorio para instalaciones globales:

 mkdir ~/.npm-global

Configure npm para usar la nueva ruta del directorio:

 npm config set prefix '~/.npm-global'

En su editor de texto preferido, abra o cree un archivo ~ / .profile y agregue esta línea:

 export PATH=~/.npm-global/bin:$PATH

En la línea de comando, actualice las variables de su sistema:

 source ~/.profile

Para probar su nueva configuración, instale un paquete globalmente sin usar sudo:

 npm install -g jshint
eustatos
fuente
¡Esto funcionó muy bien y ahorró mucha molestia!
Sumomo
0

Se agregó la ruta binaria npm a la ruta sudo usando visudo y editando "secure_path"

Ahora funciona "sudo npm"

mauricio777
fuente
0

Eliminar el nodo por completo:

  brew uninstall --force node

Instalar de nuevo:

brew install node;
which node # => /usr/local/bin/node
export NODE_PATH='/usr/local/lib/node_modules'
RANJAN CENIZO
fuente
0

En caso de que pueda ser útil para cualquiera que use rh-*paquetes, esto funcionó para mí:

sudo ln -s /opt/rh/rh-nodejs8/root/usr/bin/npm /usr/local/bin/npm
Lionel T
fuente
0

Como instalé node.js usando el archivo .tar disponible en node.js, tuve que poner la ubicación del directorio de nodos en:

~ / .bashrc

de root cambiando de usuario normal a root usando el comando:

sudo -i

luego tuve que agregar la ruta al nodo donde lo extraje en el archivo .bashrc como se muestra a continuación: ingrese la descripción de la imagen aquí

luego volvió a actualizar .bashrc usando

. ~ / .bashrc

después de eso

npm: command not found

se fue

MOHAMMAD WASEEM
fuente
0

Para mí, ninguno de los métodos mencionados anteriormente con Homebrew no funcionó en macOS. Entonces, desinstalé el nodo usando Homebrew y descargué el paquete del nodo de https://nodejs.org/en/download/ y lo instalé. Funcionó a las mil maravillas.

Manas
fuente
-8

Installl node.js y simplemente ejecuta

npm install -g bower 

desde el directorio de tu proyecto

YathuGulan Uthayan
fuente