问题描述
我从here给出的说明在Ubuntu上安装了Node.js
当我在终端中写node --version
时,我看到了:-bash: /usr/sbin/node: No such file or directory
我可以在/usr/sbin/
目录中看到该节点。
编写npm --version
显示为1.3.5
编写nodejs --version
显示为v0.10.15
另外,我可以在/usr/bin/
目录中看到该节点。
那么,如何使node
工作呢?
另外,如果我使用zsh而不是bash,则node
命令有效。
最佳解决思路
您需要手动创建符号链接/usr/bin/node
。 bash兼容shell的快捷方式:
sudo ln -s `which nodejs` /usr/bin/node
或者,如果您使用non-standard shell ,只需用which nodejs
硬编码找到的路径:
sudo ln -s /usr/bin/nodejs /usr/bin/node
以后编辑
我在您发布的链接中找到了这种解释
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.
以后再编辑
自从我回答这个问题已经有一段时间了。尽管我在这里发布的解决方案对我有用几次,但用户在评论中报告了更多解决方案:
来自@ user229115
sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10
从AskUbuntu(用户leftium)
sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs
次佳解决思路
我觉得这就是:
sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10
使用Debian替代品。
第三种解决思路
显然,解决方案在Ubuntu版本之间有所不同。以下在Ubuntu 13.10上为我工作:
sudo apt-get install nodejs-legacy
HTH
编辑:经验法则:
如果已安装nodejs
,但缺少/usr/bin/node
二进制文件,则还应安装nodejs-legacy
。这只会创建丢失的软链接。
根据我的测试,在安装nodejs
之后,Ubuntu 17.10及更高版本已经安装了compatibility-softlink /usr/bin/node
,因此这些发行版中都缺少nodejs-legacy
,因为不再需要它。
第四种思路
我在Ubuntu 14.04中有相同的问题。
我已经安装了”nodejs”并且可以正常工作,但是仅当我使用命令”nodejs”时。如果我尝试使用”node”,则不会发生任何事情。
我用以下方式解决了这个问题:
-
安装nodejs-legacy sudo apt-get安装nodejs-legacy
在那之后,当我在命令行中键入”node”时,我收到一条错误消息“ /usr /sbin /node:没有这样的文件或目录”
-
其次,我所做的是”nodejs”上的符号链接:sudo ln -s /usr /bin /nodejs /usr /sbin /node
第五种思路
这也发生在我身上。
node -v => 0.10.2
nodejs -v => 5.5.0
问题是我前一段时间已经从源代码安装了节点。运行
which node
始终指向此本地安装。也,
echo NODE_PATH
指向本地安装。
使用源安装删除目录并没有帮助。它只是破坏了节点命令。最后,取消设置NODE_PATH环境变量,然后清除然后重新安装nodejs即可解决问题。
unset NODE_PATH
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs
在这之后,
node -v => 5.5.0
并且npm install开始对依赖于Node =>的软件包起作用。 5.0。
第六种思路
我不熟悉这一切,但对我来说,一个简单的别名有效:
alias node='env NODE_NO_READLINE=1 rlwrap nodejs'
至少是直接在bash中运行事物并执行.js文件。
第七种思路
节点版本管理器(nvm)
如果您想安装多个nodejs版本并在它们之间轻松切换,建议您使用Node Version Manger。它还解决了命名问题(node
与nodejs
)
很简单:
安装一个nodejs版本:
$ nvm install 4.4
现在,除了已经安装的版本之外,您还拥有nodejs 4.4,您可以使用node
命令来获取新安装的版本:
$ node -v // The new version added by nvm.
v4.4.5
$ nodejs -v // The OS version is untouched and still available.
v0.10.25
您可以安装更多的nodejs版本,并在它们之间轻松切换:
$ 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)
第八种思路
如何使用nodejs site的官方说明:
对于v7:
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs
对于v6:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
对于v4:
curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs
我已经从Windows bash(通过Linux-14.04子系统)和raspbian(基于ARM Debian)测试了它们。在不首先运行安装脚本的情况下运行sudo apt-get install -y nodejs
将导致您获得节点0.10。
如果您打算安装需要构建的本机npm模块,请运行:
sudo apt install -y build-essential
注意:这是所有体系结构中任何基于Debian的发行版的推荐路径。
第九种思路
添加到@randunel的正确答案(尚无法对此发表评论):
我还必须将/usr /local /bin /node链接到/usr /bin /nodejs。
sudo ln -s /usr/bin/nodejs /usr/local/bin/node
显然,这是覆盖/usr /bin /node命令。
不知道如何设置,但希望它对其他人有帮助,因为弄清楚为什么上述方法对我不起作用是很痛苦的。
第十种思路
答案较晚,但有关up-to-date的信息…
如果您使用节点github安装自述文件中的Recommendation方法安装node.js,则建议按照nodesource博客文章上的说明进行操作,而不是从过时的apt-get存储库中进行安装,node.js应该使用node
命令运行,如下所示:以及nodejs
命令,而无需进行新的符号链接。
本文中的方法是:
# 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
请注意,这是针对v0.12的,在不久的将来它可能会过时。
另外,如果您像我一样在公司代理后面,则需要在sudo命令中添加-E选项,以保留代理所需的env vars:
curl -sL https://deb.nodesource.com/setup_0.12 | sudo -E bash -