我有两台 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
?
答案1
更新:修改了以下使用该nodejs-legacy
包的说明。(有关 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
当我无意中安装了非 node.jsnode
包时,发生了这种情况。虽然我apt-get remove node
在安装正确的nodejs
包之前就安装了,但我猜想该--purge
参数是必需的。
背景信息:
与 node 包(业余分组无线电节点程序)存在命名冲突,nodejs 二进制文件已从 node 重命名为 nodejs。您需要将 /usr/bin/node 符号链接到 /usr/bin/nodejs,或者您可以卸载业余分组无线电节点程序以避免该冲突。
答案2
在 Ubuntu 13.10 上,上述所有答案都对我不起作用。当我安装 nodejs-legacy 时,它终于起作用了
sudo apt-get install nodejs-legacy
这/usr/bin/node
为我正确提供,以便例如nodemon
可以使用。
答案3
不幸的是,创建符号链接对我不起作用。不过,创建别名对我有用。在~/.bashrc
or ~/.bash_aliases
(如果~/.bashrc
加载此文件)中,只需添加以下行:
alias node="nodejs"
bash
通过在控制台中输入内容重新启动 bash 会话,您的别名现在就可以起作用了。
答案4
回答晚了,但信息是最新的......
如果你使用推荐的方法安装 node.jsnode github 安装自述文件,建议按照nodesource 博客文章,而不是从过时的 apt-get repo 安装,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 选项,以保留代理所需的环境变量:
curl -sL https://deb.nodesource.com/setup_0.12 | sudo -E bash -