Error "No existe tal archivo o directorio" al usar npm

34

Instalé node y npm usando las instrucciones proporcionadas aquí

Pude usar el nodo con éxito. Sin embargo, cuando intento instalar el módulo de nodo "Formidable", aparece el siguiente error:

$npm install formidable
bash: /usr/local/bin/npm: /usr/local/bin/node: bad interpreter: No such file or directory

Cuando hago un which npmme sale el siguiente resultado:

$which npm
/usr/local/bin/npm

No tengo idea de lo que está mal con npm aquí, ¿alguna idea de cómo puedo solucionar esto?

usuario109187
fuente
Bienvenido a Ask Ubuntu! Veo que has instalado Node en /usr/local/bin/. Los paquetes que usaste en las instrucciones que vinculaste no hacen esto. Creo que también ha instalado otro Nodo de la fuente. Por favor cuenta toda la historia.
gertvdijk
@gertvdijk Bueno, inicialmente había un nodo 0.8.14 instalado. Quería actualizar esto a 0.8.18. Luego corrí $sudo apt-get remove --purge nodejs npmpero esto no funcionó. node --versiondespués de instalar 0.8.18 todavía mostró 0.8.14. Entonces, lo que hice fue seguir una publicación que no puedo encontrar ahora, básicamente se instruyó que hiciera which nodeseguido rm -r /usr/local/bin/..., básicamente, algunos archivos relacionados con el nodo en ese directorio. Ahora, después de esto, reinstalé el nodo y fue la versión actualizada. Está funcionando bien, pero npm no.
user109187
Sí, esto es lo que sucede cuando instalas desde la fuente. Confundirá la administración de su paquete y a usted como usuario. Instale solo el software como paquetes a menos que sepa lo que está haciendo. Utilice las instrucciones de desinstalación con los scripts que utilizó para instalar esta versión anterior para desinstalarla correctamente. Y edite su pregunta para proporcionar más información. Este es un sitio de preguntas y respuestas, no un foro de discusión, ¿ves? :)
gertvdijk
@gertvdijk Encontré la publicación que instruía a eliminar manualmente los archivos - stackoverflow.com/a/5917184/1907800 . La ruta aquí es / usr / bin / node
user109187

Respuestas:

51

Tomando una pista de @gertvdijk, desinstalé NPM usando el script:

rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*

(que se puede encontrar aquí )

Incluso después de realizar lo anterior, recibí otro error:

$ npm install formidable  
bash: /usr/local/bin/npm: No such file or directory

Entonces, corrí hash -ren la terminal (según las instrucciones que se encuentran en NPM no se ejecutará después de la actualización ) y listo, funcionó. ¡NPM ahora funciona!

usuario109187
fuente
1
la única cosa útil en este caso fue descubrir hash, que puede ser utilizado simplemente para punto a otro nodo / NPM (¿y si desea trabajar con más de una versión de nodo?)
user309383
Hermosa invitada.
LM_Fielding
44
hash -r me salvó
diogo.abdalla
¿Qué hashhace?
Chanjung Kim
11

Ubuntu y algunas distribuciones de Linux instalan el intérprete de nodo como /usr/bin/nodejsy no /usr/local/bin/node.

Puede resolver este problema instalando el nodejs-legacypaquete que crea un enlace simbólico de /usr/bin/nodejsa /usr/bin/node.

Solución:

sudo apt-get install nodejs-legacy

Referencias: paquete nodejs-legacy

Pac
fuente
1
Parece que nodejs-legacyya no existe.
Martín De la Fuente
2

Parece que ha instalado otra versión de Nodo de la fuente algún tiempo antes. Esto se indica por la /usr/local/binruta donde parece estar instalado ahora.

  1. Desinstale el que instaló de la fuente. Consulte las instrucciones que recibió con la fuente sobre cómo hacerlo. No hay una forma única de cómo desinstalar los scripts de software instalados que no funcionan con la administración de paquetes de su sistema.
  2. Instale los paquetes con los que figuran en las instrucciones a las que se vinculó en su pregunta.
  3. Verifique que which npmahora aparece /usr/bincomo ruta de instalación.

En general, nunca debería tener que instalar paquetes desde la fuente. Y si lo hace, tenga en cuenta las consecuencias ya que está anulando la administración del paquete aquí y se confundirá.

gertvdijk
fuente