node.js - produccion - No se pueden instalar paquetes usando el administrador de paquetes de nodo en Ubuntu
node js en produccion windows (17)
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 dice el readme.debian:
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 sus flujos ascendentes, como ax25-node del paquete "nodo".
Las secuencias de comandos que llaman a Node.js como un comando de shell deben cambiarse para utilizar el comando "nodejs".
Sin embargo, el uso de nodejs anula 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 puedo hacer que npm entienda que nodejs ya está instalado en el sistema pero que el nombre del intérprete es diferente?
Instale
nvm
primero usando:curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash
Ejecutar comando
source ~/.profile
Ahora ejecuta esto y esto mostrará todas las versiones instaladas u otras versiones de paquetes:
nvm ls-remote
Los paquetes instalados estarán en verde. Instala la versión que quieras:
nvm install 6.0.0
Compruebe dónde no está instalado:
which node
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
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 de https://nodejs.org/dist/v6.9.2/ y configurar su propio entorno.
Recomendaré herramientas como github.com/creationix/nvm y n , para administrar su versión de nodo. Es muy conveniente cambiar y trabajar con estos módulos. github.com/creationix/nvm n
O escriba bash básico para descargar zip / tar, extraer la carpeta de movimiento y crear un enlace suave. 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
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
instale nvm (administrador de versiones de nodos) 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.
El problema no está en el instalador
Reemplace nodejs con node o cambie la ruta de / usr / bin / nodejs a / usr / bin / node
En Linux Mint 17, probé ambas soluciones (crear un enlace simbólico o usar 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.
Este es el nodo donde su nodo no se instala correctamente, primero necesita desinstalar el nodo y luego instalar nuevamente. Para instalar el nodo, esto puede ayudarlo a 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.
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 claramente al nodo provisto 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
usualmente tiene una precedencia más alta en PATH que en /usr/bin
, se debe crear el siguiente alias (ingrese su .bashrc o .zshrc) para que el nodo del sistema alternativo sea 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>
.
Intenta 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.
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, cambiar la primera línea de script karma de node a nodejs, pero prefiero resolver este problema de una vez por todas
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
Simple solución desde here
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
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.
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 la lista de correo de Debian:
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.
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. El 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 website índice de paquetes de Debian.
Se puede instalar utilizando 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 punto y nodejs-legacy
convertirá en algo realmente legado.
También puede instalar Nodejs usando NVM o Nodejs Version Manager. Hay muchos benefits 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 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
Generalmente, 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 here
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 npm@latest || sudo npm install -g npm@latest
puede crear un enlace ln -s nodejs
node en /usr/bin
espero que esto resuelva su problema.
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 la source ~/.profile
del comentario que se ha doblado y algunos comandos de limpieza antes. Lo más probable es que también necesite sudo apt-get install npm
after.