No se pueden instalar paquetes usando node package manager en Ubuntu


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

El nombre de origen del nodo.el comando intérprete js es "node". En Debian la orden intérprete ha sido cambiada a "nodejs".

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

Scripts llamando al nodo.js como comando de shell debe cambiarse a en su lugar utilice el comando "nodejs".

Sin embargo, usar nodejs arruina la instalación de 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 entienda que nodejs ya está instalado en el sistema pero el nombre del intérprete es diferente?

Author: Sankar, 2014-01-16

17 answers

TL; DR:

sudo apt-get install nodejs-legacy

En Primer lugar, permítanme aclarar un poco la situación. En el verano de 2012, los mantenedores de Debian decidieron cambiar el nombre de Node.ejecutable 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 con versiones anteriores.

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

  1. El paquete nodejs: se cambiará para proporcionar /usr/bin /nodejs, no/usr/bin / node. El paquete debe declarar un Breaks: 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 nodejs-legacy en Priority: extra que contenga /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 upstream
    compatibilidad. Este paquete declara también declarará un Conflicto: relación con el paquete node.

<...>

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 enlaces simbólicos a mano. Aquí hay un enlace a este paquete en el sitio web del índice de paquetes de Debian .

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

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

 1058
Author: vbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-13 05:04:51

Intente vincular el nodo a nodejs. Primero averigüe dónde está nodejs

whereis nodejs

Luego enlace suave nodo a nodejs

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

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

 107
Author: leorex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-03 15:33:47

También puede instalar Nodejs usando NVM o Nodejs Version Manager Hay muchos beneficios al 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 los paquetes de prerrequisitos están instalados, puedes bajar el script de instalación de nvm desde la página GitHub del proyecto. El número de versión puede ser diferente, pero en general, puede descárguelo e instálelo 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 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, tendrá que cerrar sesión y volver a iniciar sesión de nuevo, o puede obtener el ~/.archivo de perfil para que su sesión actual conozca los cambios:

source ~/.profile

Ahora que tienes nvm instalado, puede instalar el nodo aislado.versiones 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 instalarlo escribiendo:

nvm install 0.11.14

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

nvm use 0.11.14

Al instalar 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 de comeplete se puede encontrar aquí

 41
Author: Eduardo Dennis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-12 20:10:11
  1. Instalar nvm primero usando:

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

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

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

    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
    
 15
Author: Ritesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-12 11:19:27
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 plegado y algunos comandos de limpieza antes. Lo más probable es que también necesite sudo apt-get install npm después.

 12
Author: Xiao Peng - ZenUML.com,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-08 03:53:07

Aquí hay otro enfoque que uso ya que me gusta n para cambiar fácilmente entre las versiones de nodo.

En un nuevo sistema Ubuntu, primero instale el nodo 'system':

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

Luego instale n módulo globalmente:

npm install -g n

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

update-alternatives --remove-all node

A continuación, añadir la nodo proporcionado por n:

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

Siguiente añadir 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 desde el menú presentado por el siguiente comando):

update-alternatives --config node

Finalmente, dado que /usr/local/bin generalmente tiene una precedencia más alta en la RUTA que /usr/bin, se debe crear el siguiente alias (ingrese su .bashrc or .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 las versiones de nodo con n <desired node version number>.

 9
Author: Ville,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-02 04:11:16

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
 9
Author: shrishinde,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-03 11:07:32

En Linux Mint 17, probé ambas soluciones (crear un enlace simbólico o usar 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, podría instalar paquetes globalmente.

 8
Author: Suzana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-10 00:52:42

Como otras personas ya han mencionado, 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 nvmy n, 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 escribir bash básico para descargar zip / tar, extraer mover carpeta y crear un enlace suave. Siempre que necesite actualizar, simplemente apunte el enlace suave antiguo a la nueva versión descargada. Como he creado para mi propio, usted puede referirse: 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
 7
Author: xdeepakv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-08 09:47:54

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 setup_x.x, por ejemplo, a setup_5.x

 4
Author: Krzysztof Karolak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-07 20:07:29

Desinstale cualquier 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

Instalar 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.

 3
Author: davide andreazzini,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-21 14:09:26

Su sistema no es capaz de detectar el nodo de ruta js binario.

1.qué nodo

2.Luego enlace suave nodo a nodejs

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

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

 3
Author: frostcs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-01 13:36:36

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 comandos

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

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

 2
Author: Juan Antonio Aguilar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-16 22:56:40

Para mí la solución fue 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
 1
Author: Jimmy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-01 02:45:41

Puede crear un nodo link ln -s nodejs en /usr/bin espero que esto resuelva tu problema.

 0
Author: Nitish Agarwal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-07 18:31:04

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

 0
Author: Vinayk93,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-26 19:41:26

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 ayudarle http://array151.com/blog/nodejs-tutorial-and-set-up /

Después de eso puede instalar los paquetes fácilmente. Para instalar los paquetes esto puede ayudarle

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

 0
Author: Dinesh Jain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-02 15:55:01