nodejs vs node on ubuntu 12.04
I installed nodejs on ubuntu from instructions given here
When I write node –version in the terminal I see this :
-bash: /usr/sbin/node: No such file or directory
I can see node in the /usr/sbin/ directory, though.
Writing npm –version shows 1.3.5
Writing nodejs –version shows v0.10.15
Also, I can see node in the /usr/bin/ directory.
So, how do I get node working?
Also, If I use zsh instead of bash, then node command works.
Solutions/Answers:
Solution 1:
You need to manually create a symlink /usr/bin/node
. Shortcut for bash compatible shells:
sudo ln -s `which nodejs` /usr/bin/node
Or if you use non-standard shells, just hardcode the path you find with which nodejs
:
sudo ln -s /usr/bin/nodejs /usr/bin/node
Later edit
I found this explanation in the link you posted
There is a naming conflict with the node package (Amateur Packet Radio Node Program), and the nodejs binary has been renamed from node to nodejs. You’ll need to symlink /usr/bin/node to /usr/bin/nodejs or you could uninstall the Amateur Packet Radio Node Program to avoid that conflict.
Later later edit
It’s been a while since I answered this. Although the solution I posted up here worked for me several times, users have reported a few more solutions within the comments:
From @user229115
sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10
From AskUbuntu (user leftium)
sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs
Solution 2:
I think this is it:
sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10
Using Debian alternatives.
Solution 3:
Apparently the solution differs between Ubuntu versions. Following worked for me on Ubuntu 13.10:
sudo apt-get install nodejs-legacy
HTH
Edit: Rule of thumb:
If you have installed nodejs
but are missing the /usr/bin/node
binary, then also install nodejs-legacy
. This just creates the missing softlink.
According to my tests, Ubuntu 17.10 and above already have the compatibility-softlink /usr/bin/node
in place after nodejs
is installed, so nodejs-legacy
is missing from these releases as it is no more needed.
Solution 4:
I have the same issue in Ubuntu 14.04.
I have installed “nodejs” and it’s working, but only if I’m use command “nodejs”. If I try to use “node” nothing happens.
I’m fixed this problem in next way:
-
Install nodejs-legacy
sudo apt-get install nodejs-legacy
After that, when I type “node” in command line I’m get an error message “/usr/sbin/node: No such file or directory”
-
Second, what I did, it’s a symbolic link on “nodejs”:
sudo ln -s /usr/bin/nodejs /usr/sbin/node
Solution 5:
This happened to me as well.
node -v => 0.10.2
nodejs -v => 5.5.0
The issue was that I had installed node from source some time ago. Running
which node
always pointed to this local installation. Also,
echo NODE_PATH
pointed to the local installation.
deleting the directory with the source install didn’t help. It just broke the node command. In the end, unsetting the NODE_PATH environmental variable and purging then reinstalling nodejs did the trick.
unset NODE_PATH
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs
After this,
node -v => 5.5.0
and npm install started to work for packages depending on Node => 5.0.
Solution 6:
I am new to all this, but for me a simple alias worked:
alias node='env NODE_NO_READLINE=1 rlwrap nodejs'
at least for running things directly in bash and executing .js files.