当前位置: 首页>>技术教程>>正文


Ubuntu 12.04上的nodejs vs节点

, , ,

问题描述

我从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”,则不会发生任何事情。

我用以下方式解决了这个问题:

  1. 安装nodejs-legacy sudo apt-get安装nodejs-legacy

在那之后,当我在命令行中键入”node”时,我收到一条错误消息“ /usr /sbin /node:没有这样的文件或目录”

  1. 其次,我所做的是”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。它还解决了命名问题(nodenodejs)

很简单:

安装一个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 -

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7232.html,未经允许,请勿转载。