nodejs vs node sur ubuntu 12.04

363

J'ai installé nodejs sur ubuntu à partir des instructions données ici

Lorsque j'écris node --versiondans le terminal, je vois ceci:
-bash: /usr/sbin/node: No such file or directory

Je peux cependant voir le nœud dans le /usr/sbin/répertoire.

Écriture de npm --versionspectacles 1.3.5
Écriture de nodejs --versionspectaclesv0.10.15

En outre, je peux voir le nœud dans le /usr/bin/répertoire.

Alors, comment puis-je nodetravailler?

De plus, si j'utilise zsh au lieu de bash, la nodecommande fonctionne.

Jatin
la source
1
Si "vous voyez un nœud dans / usr / bin /", alors quelle est la sortie de ls -l /usr/bin/node?
randunel
1
@randunel J'ai eu cette sortielrwxrwxrwx 1 root root 22 Jan 1 2013 /usr/bin/node -> /etc/alternatives/node
Jatin
Avez-vous apporté des modifications au shell rc?
randunel
Cela ressemble à un problème de shell après votre édition, qu'est-ce que la export | grep PATHsortie n'est pas utilisée zsh? (il devrait imprimer /usr/binentre autres)
randunel
1
solution + explication ici: stackoverflow.com/questions/21168141/…
throbi

Réponses:

599

Vous devez créer manuellement un lien symbolique /usr/bin/node. Raccourci pour les shells compatibles bash:

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

Ou si vous utilisez des shells non standard, il vous suffit de coder en dur le chemin que vous trouvez avec which nodejs:

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

Modification ultérieure

J'ai trouvé cette explication dans le lien que vous avez publié

Il existe un conflit de dénomination avec le package de nœuds (Amateur Packet Radio Node Program) et le fichier binaire nodejs a été renommé de node en nodejs. Vous devrez créer un lien symbolique / usr / bin / node vers / usr / bin / nodejs ou vous pouvez désinstaller le programme Amateur Packet Radio Node pour éviter ce conflit.

Plus tard plus tard modifier

Cela fait un moment que je n'ai pas répondu à cela. Bien que la solution que j'ai publiée ici ait fonctionné plusieurs fois pour moi, les utilisateurs ont signalé quelques solutions supplémentaires dans les commentaires:

De @ user229115

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

De AskUbuntu (utilisateur leftium)

sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs
randunel
la source
d'accord! Bien que, si j'utilise zsh, la nodecommande fonctionne.
Jatin
1
De plus, comment désinstaller le programme Amateur Packet Radio Node? J'ai essayé sudo apt-get remove nodemais ça ditPackage node is not installed, so not removed
Jatin
Vous n'avez pas besoin de le désinstaller, après vos commentaires, cela ressemble à un problème de shell, pas à un problème de package de nœud.
randunel
La réponse de @ randunel n'a pas fonctionné pour moi comme /usr/bin/env nodene fonctionnerait pas. La solution de @ BennyMcBenBen a fonctionné
francoisrv
2
La réponse de @ Tino est la bonne, voir la nodejs-legacydescription du paquet. La réponse liée par @BennyMcBenBen a également été mise à jour avec des instructions similaires.
tricasse
88

Je pense que c'est ça:

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

Utiliser des alternatives Debian.

user229115
la source
3
Cela semble être la meilleure option que la réponse acceptée, elle ne modifie pas manuellement le dossier / usr / bin / et utilise l'infrastructure pour des commandes alternatives
Dominik Fretz
Je ne l'ai pas essayé, mais j'ai regardé les update-alternativedocuments. Si cela fonctionne vraiment, alors c'est une meilleure solution :)
randunel
3
pouvez-vous être plus précis sur ce que cela fait?
bcorso
@DominikFretz meh. Le résultat final est exactement le même en utilisant une commande spécifique à Debian par rapport à une commande compatible POSIX. (Vous auriez pu le faire update-alternatives --install /usr/local/bin/fribjazt node /usr/bin/nodejs 10.) À chacun le sien, mais je préfère la plaine ln.
kojiro
2
Je devais le faire source ~/.bashrcpour que cela prenne effet
iNulty
64

Apparemment, la solution diffère entre les versions d'Ubuntu. Ce qui suit a fonctionné pour moi sur Ubuntu 13.10:

sudo apt-get install nodejs-legacy

HTH

Modifier: règle d'or:

Si vous avez installé nodejsmais qu'il manque le /usr/bin/nodebinaire, installez également nodejs-legacy. Cela crée simplement le lien logiciel manquant.

Selon mes tests, Ubuntu 17.10 et supérieur ont déjà le lien de compatibilité /usr/bin/nodeen place après l' nodejsinstallation, il nodejs-legacymanque donc dans ces versions car il n'est plus nécessaire.

Tino
la source
il semble que nodejs-legacy ne soit plus maintenu. dernière construction arrêtée le 2013-04-10
francoisrv
8
nodejs-legacyne nécessite pas beaucoup d'entretien. Il ajoute juste un softlink similaire à sudo ln -s nodejs /usr/bin/node, au moins sur LTS 14.04
Tino
4
Sur Ubuntu 14.04, nodejs et nodejs-legacy installent la même version de Node (0.10.25). +1 à @Tino.
Mark E. Haase
Fonctionne aussi pour Debian Jessie. Cela devrait être la réponse acceptée car c'est ainsi que les choses sont censées être. Seules les personnes utilisant le package radio amateur ne devraient pas le faire. Je me demande pourquoi ils n'ont pas renommé le package radio comme ils l'ont fait avec le chrome-bsu.
Jérôme
Cela se traduira par 2 instances de noeud sur votre système et ce n'est plus maintenu ... Je vous recommande plutôt de vous lier à nodejs.
PodTech.io
30

J'ai le même problème dans Ubuntu 14.04.

J'ai installé "nodejs" et ça marche, mais seulement si j'utilise la commande "nodejs". Si j'essaie d'utiliser "nœud", rien ne se passe.

J'ai résolu ce problème de la manière suivante:

  1. Installer nodejs-legacy

    sudo apt-get install nodejs-legacy

Après cela, lorsque je tape "nœud" dans la ligne de commande, je reçois un message d'erreur "/ usr / sbin / node: aucun fichier ou répertoire"

  1. Deuxièmement, ce que j'ai fait, c'est un lien symbolique sur "nodejs":

    sudo ln -s / usr / bin / nodejs / usr / sbin / node
Dmytro Medvid
la source
4
Il y a quelque chose de bizarre sur votre système. nodeest censé être installé dans /usr/bin/et non /usr/sbin/. Il me semble que vous aviez déjà installé le nodepackage Ubuntu de hamradio (voir packages.ubuntu.com/trusty/all/node/filelist ) et oublié d'exécuter hash -rau niveau du shell, de sorte que le shell se souvienne encore du mauvais chemin. Le second a lncorrigé cela aussi, mais ce n'est plus nécessaire après avoir quitté ce shell.
Tino
BTW, même les mauvaises réponses sont bonnes pour expliquer tous les problèmes dus à trois packages tous de noms très similaires: node( /usr/sbin/nodepour quelque chose de complètement différent), nodejs( /usr/bin/nodejs) et nodejs-legacy( /usr/bin/node, dépend du package nodejs).
Tino
Cela m'est aussi arrivé. J'avais installé le nœud de la source il y a quelque temps. node -v => 0.10.2tout nodejs -v => 5.5.0. L'exécution de la commande which nodeindiquait toujours cette installation locale. En fin de compte, je devais le faire unset NODE_PATH, ce qui indiquait l'installation locale pour le réparer. Après cela, node -v => 5.5.0et a npm install commencé à travailler pour les packages en fonction de Node => 5.0.
CHsurfer
11

Cela m'est aussi arrivé.

node -v => 0.10.2
nodejs -v => 5.5.0

Le problème était que j'avais installé le nœud depuis la source il y a quelque temps. Fonctionnement

which node

toujours pointé sur cette installation locale. Aussi,

echo NODE_PATH

a souligné l'installation locale.

la suppression du répertoire avec l'installation source n'a pas aidé. Il a juste cassé la commande de noeud. En fin de compte, la suppression de la variable d'environnement NODE_PATH et la purge, puis la réinstallation de nodejs ont fait l'affaire.

unset NODE_PATH
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs

Après ça,

node -v => 5.5.0

et l'installation de npm a commencé à fonctionner pour les packages en fonction de Node => 5.0.

CHsurfer
la source
Cela a fonctionné pour moi. Dommage, je me suis amusé pendant une heure avant de le trouver.
Dustin Fraker
11

Node Version Manager (nvm)

Si vous souhaitez installer plusieurs versions de nodejs et basculer facilement entre elles, je vous suggère d'utiliser Node Version Manager . Il résout également le problème de dénomination ( nodevs nodejs)

C'est assez simple:

Installez une version nodejs:

$ nvm install 4.4

Vous avez maintenant nodejs 4.4 en plus de la version déjà installée et vous pouvez simplement utiliser la nodecommande pour atteindre la nouvelle version installée:

$ node -v    // The new version added by nvm.
v4.4.5
$ nodejs -v  // The OS version is untouched and still available.
v0.10.25

Vous pouvez installer plusieurs versions de nodejs et basculer facilement entre elles:

$ nvm install 6.2
$ nvm use 6.2
Now using node v6.2.1 (npm v3.9.3)
$ node -v
v6.2.1
$ nvm use 4.4
Now using node v4.4.5 (npm v2.15.5)
Rotareti
la source
2
C'est résolu mon problème, merci beaucoup, j'ai trouvé une commande utile nvmsur Comment faire pour installer Node.js sur un serveur Ubuntu 14.04
Huy Nguyen
1
cela a fonctionné pour moi. Également un guide disponible ici: digitalocean.com/community/tutorials/…
Koen Cornelis
10

Je suis nouveau dans tout cela, mais pour moi, un simple alias fonctionnait:

alias node='env NODE_NO_READLINE=1 rlwrap nodejs'

au moins pour exécuter des choses directement dans bash et exécuter des fichiers .js.

Phill
la source
Travaillé sans rlwrap. Merci!
Shurik
Merci @Phill, tu es génial!
Yusril Herlian Syah
9

Que diriez-vous d'utiliser les instructions officielles du site nodejs :

Pour v7:

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

Pour v6:

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

Pour v4:

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

J'ai testé ceux-ci depuis Windows bash (via le sous-système pour Linux - 14.04) et raspbian (basé sur ARM Debian). Fonctionnementsudo apt-get install -y nodejs sans exécuter le script d'installation se traduira par vous obtenir 0,10 nœud.

Si vous prévoyez d'installer des modules NPM natifs nécessitant une construction, exécutez également:

sudo apt install -y build-essential

Remarque: c'est le chemin recommandé pour toute distribution basée sur Debian à travers toutes les architectures.

cchamberlain
la source
7

Ajout à la bonne réponse de @ randunel (ne peut pas encore commenter SO):

J'ai également dû créer un lien symbolique / usr / local / bin / node vers / usr / bin / nodejs.

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

Apparemment, cela remplaçait la commande / usr / bin / node.

Je ne sais pas comment cela a été réglé, mais j'espère que cela aide quelqu'un d'autre car c'était pénible de comprendre pourquoi ce qui précède ne fonctionnait pas pour moi.

kfblake
la source
7

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

Si vous installez node.js à l'aide de la méthode recommandée dans le fichier Lisez- moi d'installation de node github , il suggère de suivre les instructions de l' article de blog nodesource , plutôt que d'installer à partir du référentiel apt-get obsolète, node.js doit s'exécuter à l'aide de la nodecommande, aussi bien quenodejs commande, sans avoir à créer un 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 c'est pour la v0.12, qui deviendra probablement obsolète dans un avenir proche.

De plus, si vous êtes derrière un proxy d'entreprise (comme moi), vous voudrez ajouter l'option -E à la commande sudo, pour conserver les variables env requises pour le proxy:

curl -sL https://deb.nodesource.com/setup_0.12 | sudo -E bash -

Erresen
la source
7

Cela fonctionne pour moi:

alias node=nodejs

Après avoir suivi les instructions de ce lien.

Burak Tutanlar
la source
4

Si vous êtes sur une instance AWS EC2 exécutant une instance Ubuntu (testée sur Ubuntu 16.x), ces étapes peuvent fonctionner pour vous:

    mise à jour sudo apt-get
    sudo apt-get --purge supprimer le noeud -y
    sudo apt-get --purge supprimer nodejs -y
    sudo apt-get --purge supprimer legacy-node -y
    sudo rm / usr / bin / node
    curl -sL https://deb.nodesource.com/setup_6.x | sudo bash -
    sudo apt-get install nodejs -y
    noeud -v

Si tout est correct, la dernière commande doit avoir une sortie comme: v6.xx

Sinon, exécutez ce qui suit:

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

J'espère que cela vous aidera. Cela m'a aidé comme par magie (hehe).

Vivek
la source
3

J'ai eu le même problème que le lien symbolique m'a aidé: sudo ln -s / usr / bin / nodejs / usr / bin / node après cette sudo npm install -g phantomjs-prebuilt

s'est bien passé

arr
la source
2

La meilleure façon d'installer nodejs est via NVM (Node Version Manager)

Supprimer les versions précédentes:

Noeud de purge $ sudo apt-get
$ sudo apt autoremove

Supprimez également tous les modules node_modules $ sudo rm -rf node_modulesdans le répertoire contenant ce dossier.

Node & Nodejs sont techniquement la même chose. Seul le nom a changé.

Première installation ou mise à jour de nvm

exécuter en tant que root

$ sudo su 

alors

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.7/install.sh | frapper

OU

$ wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.7/install.sh | frapper

Vérifier nvm sur le chemin

$ source ~ / .profile
$ nvm ls-remote

si vous obtenez une erreur concernant la liste, installez git.

$ sudo apt-get install git

Réexécuter:

$ nvm ls-remote
OU
$ sudo nvm ls-remote

$ nvm installe la version dont vous avez besoin 

Vérification de la version

# node --version
nvm utilise la version dont vous avez besoin

COURTOISIE DE L'INFORMATION:

https://www.digitalocean.com/community/tutorials/how-to-install-node-js-with-nvm-node-version-manager-on-a-vps

CSEngineer
la source
1

J'avais créé un lien symbolique, mais cela ne fonctionnait toujours pas.

J'ai oublié de redémarrer mon terminal (ma connexion mastic). Après l'avoir fait fonctionner sans le lien symbolique :)

Jamie Hutber
la source
1

Sera utile pour les débutants absolus

Bien que vous ayez obtenu la réponse, je voulais juste souligner que la nodecommande (sans aucun paramètre) démarrera le nœud en mode REPL read-eval-print-loop pour exécuter du code javascript brut.

Une autre façon d'utiliser la nodecommande consiste à lui fournir un jsfichier en tant que paramètre. C'est ainsi que nous l'utilisons principalement.

Mohammed Zameer
la source
0

Il est facultatif de supprimer le nœud et les nœuds existants, mais vous devez également installer les derniers nœuds 7.x.

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

Utilisez simplement NVM (Node Version Manager) - https://github.com/creationix/nvm

Il est devenu la norme pour la gestion de Node.js.

Lorsque vous avez besoin d'une nouvelle version:

nvm install NEW_VER
nvm use XXX

En cas de problème, vous pouvez toujours revenir avec

nvm use OLD_VER
Dimitar Mazhlekov
la source
0

https://nodejs.org/en/download/

Download .pkg file on your mac and install it. it directly works.

  ~ which node
/usr/local/bin/node
  ~ node --version
v10.11.0
  ~ which npm
/usr/local/bin/npm
  ~ npm --version
6.4.1
Ashok R
la source