web-dev-qa-db-fra.com

Conflits node.js: / sbin / node contre / usr / bin / node

J'ai deux machines Ubuntu 12.10: la machine A est un VMWare VM et la machine B est un ancien ordinateur portable Acer. Sur les deux machines, j'ai installé le noeud en utilisant apt-get. Cependant, la machine A installe le binaire principal en tant que /usr/bin/node et la machine B en tant que /usr/bin/nodejs. Voici quelques comportements que j'ai observés:

  1. Les deux ordinateurs renvoient /usr/bin/node en réponse à la commande which node. Cependant, il n'y a pas de fichier de ce type sur la machine B.
  2. Émettre la commande nodefonctionne pour la machine A, pas pour B. Sur B, je dois utiliser nodejsà la place.
  3. Sur B, il existe un binaire appelé/sbin/node, A ne l’a pas.

Ces comportements posent des problèmes d'incohérence lors du développement sur les deux machines. Pour l'instant, j'ai travaillé en renommant les fichiers binaires sur B en tant que tels:

Sudo mv /sbin/node /sbin/node-sbin
Sudo ln -s /usr/bin/nodejs /usr/bin/node

Existe-t-il un moyen de résoudre ce problème pour que ce noeud soit installé en tant que /usr/bin/node au lieu de /usr/bin/nodejs?

32
Hai Vu

Sur Ubuntu 13.10, toutes les réponses ci-dessus n'ont pas fonctionné pour moi. Cela a finalement fonctionné quand j'ai installé nodejs-legacy

Sudo apt-get install nodejs-legacy

Ceci m'a correctement fourni /usr/bin/node, de sorte que e. g. nodemon peut être utilisé.

15
Teetrinker

update: modifié les instructions ci-dessous pour utiliser le package nodejs-legacy. ( plus d'informations sur node-legacy )

Essayez de supprimer complètement le package de noeud en conflit:

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

# Confirm it worked
node --version       # v0.10.13
ls -la `which node`  # ... /usr/bin/node -> /etc/alternatives/node

C'est ce qui m'est arrivé lorsque j'ai involontairement installé le package non-node.js nodename__. Bien que j’ai utilisé apt-get remove node avant d’installer le package nodejscorrect, j’imagine que l’argument --purge est requis.

Information de fond :

Il y a un conflit de nommage avec le paquet de noeud (Amateur Packet Radio Node Programme), et le fichier binaire de nodejs a été renommé de noeud en noeud. Vous aurez besoin de faire un lien symbolique/usr/bin/node vers/usr/bin/nodejs ou de désinstaller le programme Amateur Packet Radio Node pour éviter ce conflit.

36
Leftium

Malheureusement pour moi, créer un lien symbolique n'a pas fonctionné. Ce qui a bien fonctionné pour moi, c’était de créer un alias. Dans ~/.bashrc ou ~/.bash_aliases (si ~/.bashrc charge ce fichier), ajoutez simplement la ligne suivante:

alias node="nodejs"

Redémarrez votre session bash en tapant bash dans la console et votre alias fonctionnera maintenant.

11
Aust

Je pense que c'est ça:

 Sudo update-alternatives --install/usr/bin/node node/usr/bin/nodejs 10 

Utiliser les alternatives Debian.

7
user229115

Réponse tardive, mais pour des informations à jour ...

Si vous installez node.js à l'aide de la méthode recommandée du fichier noeud Lisez-moi de l'installation de github , il est conseillé de suivre les instructions de l'article article du blog de la source noeud , plutôt que de procéder à une installation obsolète. apt-get repo, node.js devrait être exécuté à l'aide de la commande node, ainsi que de la commande nodejs, sans avoir à créer de nouveau lien symbolique.

Cette méthode de l'article est:

# Note the new setup script name for Node.js v0.12
curl -sL https://deb.nodesource.com/setup_0.12 | Sudo bash -

# Then install with:
Sudo apt-get install -y nodejs

Notez que ceci concerne la version 0.02, qui deviendra probablement obsolète dans un avenir pas si lointain.

De plus, si vous êtes derrière un proxy d'entreprise (comme moi), vous voudrez ajouter l'option -E à la commande Sudo, afin de préserver les vars env requis pour le proxy:

curl -sL https://deb.nodesource.com/setup_0.12 | Sudo -E bash -
1
Erresen

Sur buntu 14.04 J'ai eu le même problème de nœud. Je n'avais pas travaillé "noeud", et "nodejs". je viens de faire

Sudo apt-get remove node

et juste après cela, node était en cours d'exécution, et nodejs est également en cours d'exécution :) Je suis nouveau sur Linux et c'est un mystère pour moi. Cependant Bower est en marche !!!

1
Georgi Danchev
Sudo getconf LONG_BIT
Sudo uname -p
  • Confirmez l'architecture de votre CPU
  • Recherchez votre distribution node.js dans l’arborescence de répertoires à l’adresse suivante: https://nodejs.org/dist/ (remarque: différentes versions de diverses distributions node.js pour différentes architectures de CPU).

Mon bureau est actuellement Ubuntu 15.10 AMD64, je vais donc utiliser l'URL suivante dans mon exemple d'installation (là encore, la distribution varie):

Sudo wget https://nodejs.org/dist/v5.0.0/node-v5.0.0-linux-x64.tar.gz

Ensuite, changez le répertoire en votre répertoire de téléchargement :

Sudo cd /home/name/Downloads

À partir de votre répertoire de téléchargement, exécutez les opérations suivantes:

Sudo tar -C /usr/local --strip-components 1 -xzf node-v5.0.0-linux-x64.tar.gz

Confirmez votre installation de node.js avec les éléments suivants:

Sudo ls -l /usr/local/bin/node
Sudo ls -l /usr/local/bin/npm

réf. http://www.hostingadvice.com/how-to/install-nodejs-ubuntu-14-04/

0
nick indiessance