522 votes

Impossible d'installer des paquets en utilisant le gestionnaire de paquets node dans Ubuntu

Nom de l'interpréteur NodeJS( node ) sur Ubuntu a été renommé en nodejs en raison d'un conflit de nom avec un autre paquet. Voici ce que dit le readme. Debian dit :

Le nom amont de la commande de l'interpréteur Node.js est " node ". Dans Debian, la commande de l'interpréteur a été changée en " nodejs ".

Cela a été fait pour éviter une collision d'espace de noms : d'autres commandes utilisent le même nom en amont, comme ax25-node du paquet "node". du paquet "node".

Les scripts appelant Node.js comme une commande shell doivent être modifiés pour plutôt utiliser la commande "nodejs".

Cependant, l'utilisation de nodejs nuit à l'installation des paquets en utilisant npm . L'installation du paquet échoue avec l'erreur suivante :

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

Comment faire comprendre à npm que nodejs est déjà installé sur le système mais que le nom de l'interpréteur est différent ?

29 votes

Vous pouvez essayer de ln -s nodejs node sur /usr/bin . Mais c'est un peu du bricolage.

1 votes

@vbo vous pouvez ajouter cela comme réponse - cela résout le problème !

2 votes

@HimelNagRana J'ai une autre réponse (meilleure, acceptée). Mon commentaire initial a également été transformé en réponse ( stackoverflow.com/a/21168305/539686 ).

12voto

shrishinde Points 1239

Pour moi le problème a été résolu par,

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

10voto

Ville Points 366

Voici une autre approche que j'utilise depuis que j'aime n pour passer facilement d'une version de nœud à l'autre.

Sur un nouveau système Ubuntu, installez d'abord le noeud 'system' :

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

Ensuite, installez n de façon globale :

npm install -g n

Puisque le noeud du système a été installé en premier (ci-dessus), le système alternatif peut être utilisé pour pointer proprement vers le noeud fourni par n . Assurez-vous d'abord que le système alternatif n'a rien pour le nœud :

update-alternatives --remove-all node

Ensuite, ajoutez le nœud fourni par n :

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

Ajoutez ensuite le nœud fourni par le système (celui qui a été installé avec curl) :

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

Maintenant, sélectionnez le nœud fourni par n à l'aide du menu interactif (sélectionnez /usr/local/bin/node dans le menu présenté par la commande suivante) :

update-alternatives --config node

Enfin, puisque /usr/local/bin a généralement une plus grande priorité dans PATH que /usr/bin l'alias suivant doit être créé (à entrer dans votre .bashrc ou .zshrc) si le nœud du système alternatif doit être effectif ; sinon, le nœud installé avec la commande n dans /usr/local/bin est toujours prioritaire :

alias node='/usr/bin/node'

Maintenant, vous pouvez facilement passer d'une version de nœud à l'autre avec n <desired node version number> .

9voto

Suzana_K Points 1241

Sous Linux Mint 17, j'ai essayé les deux solutions (création d'un lien symbolique ou utilisation de la fonction nodejs-legacy ) sans succès.

La seule chose qui a finalement fonctionné pour moi a été d'utiliser le 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

Cela a installé la version 10.37 de node et npm 1.4.28. Après cela, j'ai pu installer des paquets de manière globale.

9voto

xdeepakv Points 578

Comme d'autres personnes l'ont déjà mentionné, je vous suggère de ne pas utiliser "sudo apt-get" pour installer node ou toute autre bibliothèque de développement. Vous pouvez télécharger la version requise à partir de https://nodejs.org/dist/v6.9.2/ et configurer votre propre environnement.

Je recommanderai des outils comme nvm et n pour gérer votre version du nœud. Il est très pratique de passer et de travailler avec ces modules. https://github.com/creationix/nvm https://github.com/tj/n

Ou écrire un bash de base pour télécharger le zip/tar, extraire le dossier de déplacement et créer un lien logiciel. Chaque fois que vous avez besoin de mettre à jour, il suffit de pointer l'ancien lien logiciel vers la nouvelle version téléchargée. Comme je l'ai créé pour moi, vous pouvez vous référer : 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

7voto

Une solution simple de ici

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

Vous pouvez spécifier la version en changeant la valeur de setup_x.x, par exemple en setup_5.x.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X