由于名称与另一个包冲突,Ubuntu上的NodeJS解释器名称( node
)已重命名为 nodejs
. 以下是readme.debian所说的内容:
Node.js解释器命令的上游名称是“node” . 在Debian中,解释器命令已更改为“nodejs” . 这样做是为了防止命名空间冲突:其他命令在其上游使用相同的名称,例如来自“node”包的ax25-node . 必须将调用Node.js作为shell命令的脚本改为使用“nodejs”命令 .
但是,使用nodejs会破坏使用 npm
安装软件包 . 程序包安装失败,并显示以下错误:
sh:1:节点:未找到
npm WARN这种失败可能是由于使用了传统的二进制“节点”
npm WARN如需进一步说明,请阅读/usr/share/doc/nodejs/README.Debian
如何使npm了解nodejs已经安装在系统上,但解释器名称是不同的?
17 回答
尝试将节点链接到nodejs . 首先找出nodejs的位置
然后软链接节点到nodejs
我假设/ usr / bin在你的执行路径中 . 然后你可以通过在你的命令行输入node或npm来测试,现在一切都应该可行 .
将已接受的答案与已折叠的评论中的
source ~/.profile
和之前的一些清理命令相结合 . 很可能你也需要sudo apt-get install npm
之后 .这是我使用的另一种方法,因为我喜欢n,以便在节点版本之间轻松切换 .
在新的Ubuntu系统上,首先安装'system'节点:
然后全局安装n模块:
由于首先安装了系统节点(上图),因此备用系统可以用于干净地指向n提供的节点 . 首先确保替代系统对节点没有任何意义:
然后添加n提供的节点:
接下来添加系统提供的节点(使用curl安装的节点):
现在使用交互式菜单选择n提供的节点(从以下命令显示的菜单中选择
/usr/local/bin/node
):最后,由于
/usr/local/bin
在PATH中的优先级通常高于/usr/bin
,因此如果要使替代系统节点生效,则必须创建以下别名(输入.bashrc或.zshrc);否则在/ usr / local / bin中安装n的节点始终优先:现在,您可以使用
n <desired node version number>
轻松切换节点版本 .正如其他人已经提到的,我建议不要使用"sudo apt-get"来安装节点或任何开发库 . 您可以从https://nodejs.org/dist/v6.9.2/下载所需的版本并设置您自己的环境 .
我会推荐像nvm和n这样的工具来管理你的节点版本 . 切换和使用这些模块非常方便 . https://github.com/creationix/nvm https://github.com/tj/n
或者编写基本的bash来下载zip / tar,解压移动文件夹并创建一个软链接 . 无论何时需要更新,只需将旧软链接指向新下载的版本即可 . 就像我为自己创造的那样,你可以参考:https://github.com/deepakshrma/NodeJs-4.0-Reference-Guide/blob/master/nodejs-installer.sh
在Linux Mint 17上,我尝试了两种解决方案(创建符号链接或使用
nodejs-legacy
包)但没有成功 .唯一对我有用的是使用Chris Lea的ppa:
此安装节点版本10.37和npm 1.4.28 . 之后,我可以在全球范围内安装软件包 .
TL; DR:
首先让我澄清一下情况 . 2012年夏天,Debian维护者决定重命名Node.js可执行文件,以防止某些命名空间与另一个包发生冲突 . 这对Debian技术委员会来说是非常困难的决定,因为它打破了向后兼容性 .
以下是委员会决议草案的引用,该草案发表于Debian mailing list:
第2段是OP问题的实际解决方案 . OP应该尝试安装此软件包,而不是手动执行符号链接 . 这是Debian软件包索引website中此软件包的链接 .
它可以使用
sudo apt-get install nodejs-legacy
安装 .我没有找到关于NPM开发人员采用整个事情的任何信息,但我认为
npm
软件包将在某些方面得到修复并且nodejs-legacy
成为真正的遗产 .我修复了unlinking / usr / sbin / node(链接到ax25-node包),然后我在命令行上创建了一个指向nodejs的链接
因为karma之类的包不能与nodejs名一起使用,但是将karma脚本的第一行从node更改为nodejs,但我更喜欢解决这个问题一劳永逸
问题不在安装程序中
将nodejs替换为node或将路径从/ usr / bin / nodejs更改为/ usr / bin / node
对我来说,修复是删除节点*包和npm包 .
然后全新安装为:
来自here的简单解决方案
您可以通过更改setup_x.x值来指定版本,例如更改为setup_5.x
这是您的节点未正确安装,首先需要卸载节点然后再次安装 . 要安装节点,这可能对您有帮助http://array151.com/blog/nodejs-tutorial-and-set-up/
之后,您可以轻松安装软件包 . 要安装软件包,这可能对您有所帮助
http://array151.com/blog/npm-node-package-manager/
nvm
:您还可以使用 NVM 或Nodejs版本管理器安装Nodejs使用版本管理器有很多benefits . 其中一个是你不必担心这个问题 .
说明:
安装必备软件包后,可以从项目的GitHub页面下载nvm安装脚本 . 版本号可能不同,但一般情况下,您可以使用以下语法下载并安装它:
这将下载脚本并运行它 . 它将软件安装到主目录的子目录
~/.nvm
. 它还会为~/.profile
文件添加必要的行以使用该文件 .要访问nvm功能,您需要注销并重新登录,或者您可以获取〜/ .profile文件,以便您当前的会话知道更改:
现在您已经安装了nvm,您可以安装隔离的Node.js版本 .
要找出可用于安装的Node.js版本,可以键入:
正如您所看到的,撰写本文时的最新版本是v0.11.14 . 您可以通过输入以下命令安装:
通常,nvm将切换为使用最近安装的版本 . 您可以通过键入以下内容明确告诉nvm使用我们刚刚下载的版本:
使用nvm安装Node.js时,可执行文件称为节点 . 您可以通过键入以下内容来查看shell当前使用的版本:
可以找到Comeplete教程here
对我来说问题解决了,
你可以在
/usr/bin
中创建一个链接ln -s nodejs
节点,希望这能解决你的问题 .您的系统无法检测路径节点js二进制文件 .
1.哪个节点
2.然后将软链接节点发送到nodejs
我假设/ usr / bin在你的执行路径中 . 然后你可以通过在你的命令行输入node或npm来测试,现在一切都应该可行 .
卸载您拥有的任何节点版本
安装nvm(节点版本管理器)https://github.com/creationix/nvm
现在,您可以安装所需的任何版本的节点,并在版本之间切换 .