问题描述
我有两台Ubuntu 12.10机器:机器A是VMWare VM,机器B是旧Acer笔记本电脑。在两台机器上,我使用apt-get安装了节点。但是,机器A将主二进制文件安装为/usr/bin/node
,将机器B安装为/usr/bin/nodejs
。以下是我观察到的一些行为:
-
两台机器都返回
/usr/bin/node
以响应which node
命令。但是,机器B上没有这样的文件。 -
发出命令
node
适用于机器A,而不是B.在B,我必须使用nodejs
。 -
在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
参数是必需的。
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替代品。