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


node.js冲突:/sbin/node vs/usr/bin/node

, ,

问题描述

我有两台Ubuntu 12.10机器:机器A是VMWare VM,机器B是旧Acer笔记本电脑。在两台机器上,我使用apt-get安装了节点。但是,机器A将主二进制文件安装为/usr/bin/node,将机器B安装为/usr/bin/nodejs。以下是我观察到的一些行为:

  1. 两台机器都返回/usr/bin/node以响应which node命令。但是,机器B上没有这样的文件。

  2. 发出命令node适用于机器A,而不是B.在B,我必须使用nodejs

  3. 在B上,有一个名为/sbin /node的二进制文件,A没有它。

在两台机器上开发时,这些行为会导致不一致问题。现在,我通过在B上重命名二进制文件来解决这个问题:

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

有没有办法真正解决这个问题,那么该节点将安装为/usr/bin/node而不是/usr/bin/nodejs

最佳解决思路

在Ubuntu 13.10上面的所有答案对我都不起作用。当我安装nodejs-legacy时它终于奏效了

sudo apt-get install nodejs-legacy

这为我正确提供了/usr/bin/node,以便e。 G。可以使用nodemon

次佳解决思路

更新:下面修改的说明使用nodejs-legacy包。(more info about node-legacy)

尝试完全删除冲突的节点包:

sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs-legacy
sudo apt-get --purge remove nodejs

sudo apt-get install nodejs-legacy

# Confirm it worked
node --version       # v0.10.13
ls -la `which node`  # ... /usr/bin/node -> /etc/alternatives/node

当我无意中安装了non-node.js node软件包时发生了这种情况。虽然在安装正确的nodejs软件包之前我做了apt-get remove node,但我想--purge参数是必需的。

Background info

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.

第三种解决思路

不幸的是,创建一个符号链接不起作用。为我工作的是创建一个别名。在~/.bashrc~/.bash_aliases中(如果~/.bashrc加载此文件),只需添加以下行:

alias node="nodejs"

通过在控制台中键入bash重新启动bash会话,您的别名现在可以正常工作。

第四种思路

我觉得这就是:


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

使用Debian替代品。

参考资料

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