No se pueden instalar paquetes usando el administrador de paquetes de nodo en Ubuntu

El nombre del intérprete NodeJS ( node ) en Ubuntu ha sido renombrado como nodejs debido a conflictos de nombres con otro paquete. Esto es lo que dice el readme.debian:

El nombre en sentido ascendente para el comando de intérprete Node.js es “nodo”. En Debian, el comando del intérprete se ha cambiado a “nodejs”.

Esto se hizo para evitar una colisión del espacio de nombres: otros comandos usan el mismo nombre en sus upstreams, como ax25-node del paquete “node”.

Los scripts que llaman a Node.js como un comando de shell deben ser cambiados para usar en su lugar el comando “nodejs”.

Sin embargo, el uso de nodejs no permite instalar paquetes usando npm . La instalación del paquete falla con el siguiente error:

 sh: 1: node: not found npm WARN This failure might be due to the use of legacy binary "node" npm WARN For further explanations, please read /usr/share/doc/nodejs/README.Debian 

¿Cómo hago que npm comprenda que nodejs ya está instalado en el sistema, pero el nombre del intérprete es diferente?

TL; DR:

 sudo apt-get install nodejs-legacy 

Antes que nada déjame aclarar un poco la situación. En el verano de 2012, los mantenedores de Debian decidieron renombrar el ejecutable de Node.js para evitar algún tipo de colisión en el espacio de nombres con otro paquete. Fue una decisión muy difícil para el Comité Técnico de Debian, porque rompe la compatibilidad con versiones anteriores.

La siguiente es una cita del borrador de la resolución del Comité, publicada en la lista de correo de Debian:

  1. El paquete nodejs se debe cambiar para proporcionar / usr / bin / nodejs, no / usr / bin / node. El paquete debe declarar una relación Breaks: con cualquier paquete en Debian que haga referencia a / usr / bin / node.

  2. El paquete fuente nodejs también proporcionará un paquete binario nodejs-legacy en Priority: extra que contiene / usr / bin / node como un enlace simbólico a / usr / bin / nodejs. Ningún paquete en el archivo puede depender o recomendar el paquete nodejs-legacy, que se proporciona únicamente para el flujo ascendente
    compatibilidad. Este paquete declara también declarará una relación Conflictos: con el paquete de nodo.

< ...>

El párrafo 2 es la solución real para el problema de OP. OP debería intentar instalar este paquete en lugar de hacer el enlace simbólico a mano. Aquí hay un enlace a este paquete en el sitio web del índice del paquete Debian.

Se puede instalar usando sudo apt-get install nodejs-legacy .

No he encontrado ninguna información sobre la adopción de todo por parte de los desarrolladores de NPM, pero creo que el paquete npm se arreglará en algún punto y nodejs-legacy convertirá realmente en legado.

Intente vincular el nodo a nodejs. Primero averigua dónde está nodejs

 whereis nodejs 

Luego, nodo de enlace suave a nodejs

 ln -s [the path of nodejs] /usr/bin/node 

Supongo que / usr / bin está en tu ruta de ejecución. Luego puedes probar escribiendo node o npm en tu línea de comando, y todo debería funcionar ahora.

También puede instalar Nodejs usando NVM o el Administrador de versiones de Nodejs. Hay muchos beneficios al usar un administrador de versiones. Uno de ellos es que no tiene que preocuparse por este problema.

Instrucciones:

 sudo apt-get update sudo apt-get install build-essential libssl-dev 

Una vez que los paquetes de requisitos previos están instalados, puede desplegar el script de instalación nvm desde la página GitHub del proyecto. El número de versión puede ser diferente, pero en general, puede descargarlo e instalarlo con la siguiente syntax:

 curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh 

Esto descargará el script y lo ejecutará. Instalará el software en un subdirectorio de su directorio personal en ~/.nvm . También agregará las líneas necesarias a su archivo ~/.profile para usar el archivo.

Para obtener acceso a la funcionalidad nvm, deberá cerrar sesión y volver a iniciar sesión, o puede obtener el archivo ~ / .profile para que su sesión actual conozca los cambios:

 source ~/.profile 

Ahora que tiene nvm instalado, puede instalar versiones aisladas de Node.js.

Para conocer las versiones de Node.js que están disponibles para la instalación, puede escribir:

 nvm ls-remote . . . v0.11.10 v0.11.11 v0.11.12 v0.11.13 v0.11.14 

Como puede ver, la versión más nueva al momento de escribir esto es v0.11.14. Puede instalar eso escribiendo:

 nvm install 0.11.14 

Por lo general, nvm cambiará para usar la versión instalada más recientemente. Puede indicar explícitamente a nvm que use la versión que acabamos de descargar escribiendo:

 nvm use 0.11.14 

Cuando instala Node.js usando nvm, el ejecutable se llama nodo. Puede ver la versión que está utilizando actualmente el shell escribiendo:

 node -v 

El tutorial completo se puede encontrar aquí

  1. Instale nvm primero usando:

     curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash 
  2. Ejecutar comando

     source ~/.profile 
  3. Ahora ejecuta esto y esto mostrará todas las versiones instaladas u otras de paquetes:

     nvm ls-remote 
  4. Los paquetes instalados estarán en verde. Instala la versión que quieras:

     nvm install 6.0.0 
  5. Verifique dónde no está instalado:

     which node 
  6. Verifique la versión actual:

     node -v n=$(which node); n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local 
 sudo apt-get --purge remove node sudo apt-get --purge remove nodejs-legacy sudo apt-get --purge remove nodejs sudo apt-get install nodejs-legacy source ~/.profile 

Combina la respuesta aceptada con source ~/.profile del comentario que se ha plegado y algunos comandos de limpieza anteriormente. Lo más probable es que también deba sudo apt-get install npm después.

Aquí hay otro enfoque que utilizo desde que me gusta n para cambiar fácilmente entre versiones de nodo.

En un nuevo sistema Ubuntu, primero instale el nodo ‘sistema’:

 curl -sL https://deb.nodesource.com/setup | sudo bash - 

Luego instale n module globalmente:

 npm install -gn 

Como el nodo del sistema se instaló primero (arriba), el sistema de alternativas se puede usar para apuntar limpiamente al nodo provisto por n . Primero asegúrate de que el sistema de alternativas no tenga nada para el nodo:

 update-alternatives --remove-all node 

A continuación, agregue el nodo proporcionado por n :

 update-alternatives --install /usr/bin/node node /usr/local/bin/node 1 

A continuación, agregue el nodo proporcionado por el sistema (el que se instaló con curl):

 update-alternatives --install /usr/bin/node node /usr/bin/nodejs 2 

Ahora seleccione el nodo proporcionado por n usando el menú interactivo (seleccione /usr/local/bin/node del menú presentado por el siguiente comando):

 update-alternatives --config node 

Finalmente, dado que /usr/local/bin usualmente tiene una precedencia más alta en PATH que /usr/bin , se debe crear el siguiente alias (ingrese su .bashrc o .zshrc) si el nodo del sistema alternativo debe ser efectivo; de lo contrario, el nodo instalado con n en / usr / local / bin siempre tiene prioridad:

 alias node='/usr/bin/node' 

Ahora puede cambiar fácilmente entre versiones de nodo con n .

para mí el problema fue resuelto por,

 sudo apt-get remove node sudo apt-get remove nodejs curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - sudo apt-get install -y nodejs sudo ln -s /usr/bin/nodejs /usr/bin/node alias node=nodejs rm -r /usr/local/lib/python2.7/dist-packages/localstack/node_modules npm install -g npm@latest || sudo npm install -g npm@latest 

En Linux Mint 17, probé ambas soluciones (creando un enlace simbólico o usando el paquete nodejs-legacy ) sin éxito.

Lo único que finalmente funcionó para mí fue usar el ppa de Chris Lea:

 sudo apt-get purge node-* sudo apt-get autoremove sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get install nodejs 

Este nodo instalado versión 10.37 y npm 1.4.28. Después de eso, pude instalar paquetes globalmente.

Como ya mencionan otras personas, sugeriré que no use “sudo apt-get” para instalar el nodo o cualquier biblioteca de desarrollo. Puede descargar la versión requerida desde https://nodejs.org/dist/v6.9.2/ y configurar su propio entorno.

Recomendaré herramientas como nvm yn para administrar la versión del nodo. Es muy conveniente cambiar y trabajar con estos módulos. https://github.com/creationix/nvm https://github.com/tj/n

O escriba bash bash para descargar zip / tar, extraiga mover carpeta y cree un enlace suave. Siempre que necesite actualizar, simplemente apunte el enlace suave anterior a la nueva versión descargada. Como he creado para mí, puede consultar: https://github.com/deepakshrma/NodeJs-4.0-Reference-Guide/blob/master/nodejs-installer.sh

 #Go to home cd ~ #run command #New Script wget https://raw.githubusercontent.com/deepakshrma/NodeJs-4.0-Reference-Guide/master/nodejs-installer.sh bash nodejs-installer.sh -v lts #here -v or --version can be sepecific to 0.10.37 or it could be latest/lts #Examples bash nodejs-installer.sh -v lts bash nodejs-installer.sh -v latest bash nodejs-installer.sh -v 4.4.2 

Solución simple de aquí

 curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -- sudo apt-get install nodejs 

Puede especificar la versión cambiando el valor de setup_x.x, por ejemplo, para setup_5.x

Desinstale la versión de nodo que tenga

 sudo apt-get --purge remove node sudo apt-get --purge remove nodejs-legacy sudo apt-get --purge remove nodejs 

install nvm (Node Version Manager) https://github.com/creationix/nvm

 wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash 

Ahora puede instalar cualquier versión del nodo que desee y cambiar entre las versiones.

Su sistema no puede detectar el nodo de ruta js binario.

1. qué nodo

2. Luego, el nodo de enlace suave a nodejs

 ln -s [the path of nodejs] /usr/bin/node 

Supongo que / usr / bin está en tu ruta de ejecución. Luego puedes probar escribiendo node o npm en tu línea de comando, y todo debería funcionar ahora.

Lo arreglé desvinculándolo / usr / sbin / node (que está vinculado al paquete ax25-node), luego he creado un enlace a nodejs usando esto en la línea de comando

 sudo ln -s /usr/bin/nodejs /usr/bin/node 

Porque un paquete como karma no funciona con el nombre de nodejs, sin embargo cambia la primera línea de script de karma de node a nodejs, pero prefiero resolver este problema de una vez por todas

Para mí, la solución era eliminar los paquetes node * y también los paquetes npm.

Luego una nueva instalación como:

 sudo apt-get install autoclean sudo apt-get install nodejs-legacy npm install 

puede crear un enlace ln -s nodejs nodo ln -s nodejs en /usr/bin espero que esto resuelva su problema.

El problema no está en el instalador
reemplace nodejs con node o cambie la ruta de / usr / bin / nodejs a / usr / bin / node

Este es el nodo que no se instala correctamente, primero debe desinstalar el nodo y luego volver a instalarlo. Para instalar el nodo, esto puede ayudarte http://array151.com/blog/nodejs-tutorial-and-set-up/

después de eso puedes instalar los paquetes fácilmente. Para instalar los paquetes, esto puede ayudarte

http://array151.com/blog/npm-node-package-manager/