web-dev-qa-db-esp.com

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

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

El nombre en sentido ascendente para el comando del 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 en el espacio de nombres: otros comandos usan el mismo nombre en su flujo ascendente, como ax25-node del paquete "node".

Las secuencias de comandos que llaman a Node.js como un comando de Shell deben cambiarse para usar el comando "nodejs".

Sin embargo, usar nodejs mucks up instalando 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 puedo hacer que npm entienda que nodejs ya está instalado en el sistema pero que el nombre del intérprete es diferente?

486
Sayem

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 cambiar el nombre del ejecutable Node.js para evitar algún tipo de colisión de espacio de nombres con otro paquete. Fue una decisión muy difícil para el Comité Técnico de Debian, porque rompe la compatibilidad hacia atrás.

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

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

  2. El paquete fuente de nodejs también proporcionará un paquete binario legado nodejs 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á un conflicto: relación con el paquete de nodo.

<...>

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

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

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

1082
vbo

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

whereis nodejs

Entonces el nodo de enlace suave a nodejs

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

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

109
leorex

También puede instalar Nodejs usandoNVMo Administrador de versiones de Nodejs Hay muchos beneficios para usar un administrador de versiones. Uno de ellos es que no tienes que preocuparte por este problema.


Instrucciones:


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

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

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 de inicio 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 averiguar 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 reciente en el momento de escribir esto es v0.11.14. Puedes 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í

41
Eduardo Dennis
  1. Instala 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 versiones 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. Compruebe dónde no está instalado:

    which node
    
  6. Compruebe 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
    
17
Ritesh
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

Combinó la respuesta aceptada con source ~/.profile del comentario que se ha doblado y algunos comandos de limpieza antes. Lo más probable es que también necesites Sudo apt-get install npm después.

13

para mi 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 [email protected] || Sudo npm install -g [email protected]
11
shrishinde

Este es otro enfoque que utilizo ya que me gusta n para cambiar fácilmente entre las 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 módulo globalmente:

npm install -g n

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

update-alternatives --remove-all node

Luego 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 provisto 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 generalmente tiene una prioridad más alta en PATH que /usr/bin, se debe crear el siguiente alias (ingrese en su .bashrc o .zshrc) para que el nodo del sistema alternativo sea efectivo; de lo contrario, el nodo instalado con n in/usr/local/bin siempre tiene prioridad:

alias node='/usr/bin/node'

Ahora puede cambiar fácilmente entre las versiones de nodo con n <desired node version number>.

9
Ville

Como otras personas ya mencionaron, sugeriré no usar "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 y n , para administrar su versión de nodo. Es muy conveniente cambiar y trabajar con estos módulos. https://github.com/creationix/nvmhttps://github.com/tj/n

O escriba bash básico para descargar Zip/tar, extraer la carpeta de movimiento y crear un enlace flexible. Siempre que necesite actualizar, simplemente apunte el antiguo enlace de software a la nueva versión descargada. Al igual que he creado por mi cuenta, 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
8
xdeepakv

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

Lo único que finalmente me funcionó 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.

8
Suzana

Solución simple desde 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 a setup_5.x

5

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

1.que nodo

2.Entonces el nodo de enlace suave a nodejs

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

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

4
frostcs

Desinstala cualquier versión de nodo que tengas

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

instalar nvm (administrador de versiones de nodos) https://github.com/creationix/nvm

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

Ahora puede instalar la versión de nodo que desee y cambiar entre las versiones.

4
davide andreazzini

Lo arreglé desvinculando/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

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

2

Este es el nodo donde su nodo no se instala correctamente, primero necesita desinstalar el nodo y luego instalarlo nuevamente. Para instalar el nodo, esto puede ayudarle 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/

1
Dinesh Jain

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

1
Vinayk93

Para mí, la solución fue eliminar los paquetes de nodo * 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
1
Jimmy

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

0
Nitish Agarwal