Le nom de l'interpréteur NodeJS (node
) sous Ubuntu a été renommé en nodejs
en raison d'un conflit de nom avec un autre paquet. Voici ce que le readme. Debian dit:
Le nom en amont de la commande d'interpréteur Node.js est "noeud". Dans Debian, la commande interpréteur a été changée en "nodejs".
Ceci a été fait pour éviter une collision entre espaces de noms: d'autres commandes utilisent le même nom en amont, tel que ax25-node du paquet "node".
Les scripts appelant Node.js en tant que commande Shell doivent être modifiés pour utiliser la commande "nodejs".
Cependant, utiliser nodejs complique l’installation de paquets avec npm
. L'installation du package é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?
TL; DR:
Sudo apt-get install nodejs-legacy
Tout d’abord, laissez-moi clarifier un peu la situation. À l'été 2012, les responsables Debian ont décidé de renommer l'exécutable Node.js afin d'éviter toute sorte de collision d'espace de noms avec un autre paquet. C’était une décision très difficile à prendre pour le comité technique de Debian, car elle supprime la compatibilité ascendante.
Ce qui suit est une citation du projet de résolution du comité, publié dans Debian liste de diffusion :
Le paquetage nodejs doit être modifié pour fournir/usr/bin/nodejs, pas/usr/bin/node. Le paquet doit déclarer une relation Breaks: avec tous les paquets dans Debian faisant référence à/usr/bin/node.
Le paquet source nodejs doit également fournir un paquet binaire nodejs-legacy sur Priority: extra qui contient/usr/bin/node en tant que lien symbolique vers/usr/bin/nodejs. Aucun package dans l’archive ne peut dépendre du package nodejs-legacy, qui est fourni uniquement pour les applications en amont, ni le recommander.
compatibilité. Ce package déclare doit également déclarer une relation Conflicts: avec le package de noeud.<...>
Le paragraphe 2 est la solution réelle au problème d'OP. OP devrait essayer d'installer ce paquet au lieu de faire un lien symbolique à la main. Voici un lien vers ce paquet dans l’index du paquet Debian site web .
Il peut être installé avec Sudo apt-get install nodejs-legacy
.
Je n'ai trouvé aucune information sur l'adoption de l'ensemble par les développeurs NPM, mais je pense que le paquet npm
sera corrigé sur un point et que nodejs-legacy
deviendra vraiment un héritage.
Essayez de relier noeud à nodejs. D'abord trouver où est nodejs
whereis nodejs
Ensuite, lien soft noeud à nodejs
ln -s [the path of nodejs] /usr/bin/node
Je suppose que/usr/bin est dans votre chemin d'exécution. Ensuite, vous pouvez tester en tapant node ou npm dans votre ligne de commande, et tout devrait fonctionner maintenant.
Vous pouvez également installer Nodejs en utilisant NVM ou Nodejs Version Manager Il y a beaucoup de avantages à utiliser un gestionnaire de versions . L'un d'entre eux étant que vous n'avez pas à vous soucier de ce problème.
Sudo apt-get update
Sudo apt-get install build-essential libssl-dev
Une fois les packages prérequis installés, vous pouvez extraire le script d'installation nvm à partir de la page GitHub du projet. Le numéro de version peut être différent, mais en général, vous pouvez le télécharger et l'installer avec la syntaxe suivante:
curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh
Cela va télécharger le script et l'exécuter. Il installera le logiciel dans un sous-répertoire de votre répertoire personnel à l'adresse ~/.nvm
. Il ajoutera également les lignes nécessaires à votre fichier ~/.profile
pour utiliser le fichier.
Pour accéder à la fonctionnalité nvm, vous devez vous déconnecter et vous reconnecter, ou vous pouvez créer le fichier ~/.profile pour que votre session en cours connaisse les modifications:
source ~/.profile
Maintenant que vous avez installé nvm, vous pouvez installer des versions isolées de Node.js.
Pour connaître les versions de Node.js disponibles pour l'installation, vous pouvez taper:
nvm ls-remote
. . .
v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14
Comme vous pouvez le constater, la version la plus récente au moment de l'écriture est la v0.11.14. Vous pouvez l'installer en tapant:
nvm install 0.11.14
Habituellement, NVM utilisera la dernière version installée. Vous pouvez explicitement dire à nvm d’utiliser la version que nous venons de télécharger en tapant:
nvm use 0.11.14
Lorsque vous installez Node.js à l’aide de nvm, l’exécutable s’appelle nœud. Vous pouvez voir la version actuellement utilisée par le shell en tapant:
node -v
Le tutoriel comeplete peut être trouvé ici
Installez nvm
d'abord en utilisant:
curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash
Exécuter la commande
source ~/.profile
Maintenant, lancez ceci et cela montrera toutes les versions installées ou autres des paquets:
nvm ls-remote
Les paquets installés seront en vert. Installez la version de votre choix:
nvm install 6.0.0
Vérifiez où n'est pas installé:
which node
Vérifier la version actuelle:
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
Combiné la réponse acceptée avec source ~/.profile
à partir du commentaire qui a été plié et certaines commandes de nettoyage avant. Très probablement, vous aurez également besoin de Sudo apt-get install npm
après.
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
Voici une autre approche que j'utilise depuis que j'aime n pour passer facilement d'une version à l'autre.
Sur un nouveau système Ubuntu, installez d’abord le nœud 'système':
curl -sL https://deb.nodesource.com/setup | Sudo bash -
Ensuite, installez le module n globalement:
npm install -g n
Le nœud système ayant été installé en premier (ci-dessus), le système alternatif peut être utilisé pour pointer proprement sur le nœud fourni par n . D'abord, assurez-vous que le système d'alternatives n'a rien pour le noeud:
update-alternatives --remove-all node
Ajoutez ensuite le noeud fourni par n :
update-alternatives --install /usr/bin/node node /usr/local/bin/node 1
Ensuite, ajoutez le noeud fourni par le système (celui qui a été installé avec curl):
update-alternatives --install /usr/bin/node node /usr/bin/nodejs 2
Sélectionnez maintenant le noeud 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, étant donné que /usr/local/bin
a généralement une priorité plus élevée dans PATH que /usr/bin
, l'alias suivant doit être créé (entrez dans votre .bashrc ou .zshrc) si le noeud système alternatif doit être effectif; sinon, le nœud installé avec n dans/usr/local/bin a toujours la priorité:
alias node='/usr/bin/node'
Maintenant, vous pouvez facilement changer de version de noeud avec n <desired node version number>
.
Comme d'autres personnes le mentionnent déjà, je suggérerai de ne pas utiliser "Sudo apt-get" pour installer des nœuds ou des bibliothèques 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 tels que nvm et n , pour gérer votre version de noeud. Il est très pratique de passer et de travailler avec ces modules. https://github.com/creationix/nvmhttps://github.com/tj/n
Ou écrivez bash pour télécharger Zip/tar, extrayez le dossier de déplacement et créez un lien symbolique. Chaque fois que vous avez besoin de mettre à jour, il suffit de pointer l'ancien lien vers la nouvelle version téléchargée. Comme je l'ai créé pour le mien, 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
Sur Linux Mint 17, j'ai essayé les deux solutions (créer un lien symbolique ou utiliser le paquetage 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
Ce noeud installé version 10.37 et npm 1.4.28. Après cela, je pourrais installer des paquets globalement.
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 modifiant la valeur setup_x.x, par exemple en setup_5.x
Votre système ne peut pas détecter le nœud de chemin js binary.
1. quel noeud
2.Puis le nœud de liaison symbolique vers nodejs
ln -s [the path of nodejs] /usr/bin/node
Je suppose que/usr/bin est dans votre chemin d'exécution. Ensuite, vous pouvez tester en tapant node ou npm dans votre ligne de commande, et tout devrait fonctionner maintenant.
Désinstallez la version de noeud que vous avez
Sudo apt-get --purge remove node
Sudo apt-get --purge remove nodejs-legacy
Sudo apt-get --purge remove nodejs
installer nvm (Node Version Manager) https://github.com/creationix/nvm
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
Vous pouvez maintenant installer la version de nœud de votre choix et passer d’une version à l’autre.
Je l'ai corrigé en dissociant/usr/sbin/node (qui est lié au paquet ax25-node), puis j'ai créé un lien vers nodejs en utilisant ceci en ligne de commande
Sudo ln -s /usr/bin/nodejs /usr/bin/node
Parce que les paquets tels que karma ne fonctionnent pas avec le nom nodejs, toutefois, changer la première ligne du script karma de node à nodejs, mais je préfère résoudre ce problème une fois pour toutes
Ceci est le votre noeud n'est pas installé correctement, vous devez d'abord désinstaller le noeud, puis installez à nouveau. Pour installer le nœud, ceci peut vous aider http://array151.com/blog/nodejs-tutorial-and-set-up/
après cela, vous pouvez installer les paquets facilement. Pour installer les packages, cela peut vous aider
Le problème n'est pas dans l'installateur
remplacer nodejs avec node ou changer le chemin de/usr/bin/nodejs en/usr/bin/node
Pour moi, le correctif consistait à supprimer les packages node * ainsi que les packages npm.
Puis une nouvelle installation en tant que:
Sudo apt-get install autoclean
Sudo apt-get install nodejs-legacy
npm install
vous pouvez créer un lien ln -s nodejs
noeud dans /usr/bin
espérons que cela résout votre problème.