由于与另一个包的名称冲突,Ubuntu 上的 NodeJS 解释器名称 (node
) 已重命名为 nodejs
。这是自述文件的内容。 Debian 说:
Node.js 解释器命令的上游名称是“node”。在 Debian 中,解释器命令已更改为“nodejs”。这样做是为了防止命名空间冲突:其他命令在其上游使用相同的名称,例如“node”包中的 ax25-node。必须将调用 Node.js 作为 shell 命令的脚本改为使用“nodejs”命令。
但是,使用 nodejs 会妨碍使用 npm
安装软件包。软件包安装失败并出现以下错误:
sh: 1: node: not found npm WARN 这个失败可能是由于使用了旧的二进制“node” npm WARN 更多解释,请阅读/usr/share/doc/nodejs/README.Debian
如何让 npm 理解系统上已经安装了 nodejs 但解释器名称不同?
/usr/bin
中尝试 ln -s nodejs node
。不过,这有点骇人听闻。
TL;博士:
sudo apt-get install nodejs-legacy
首先让我澄清一下情况。 2012 年夏天,Debian 维护人员决定重命名 Node.js 可执行文件,以防止与另一个包发生某种命名空间冲突。对于 Debian 技术委员会来说,这是一个非常艰难的决定,因为它破坏了向后兼容性。
以下是 Debian mailing list 中发布的委员会决议草案的引述:
nodejs 包应更改为提供 /usr/bin/nodejs,而不是 /usr/bin/node。该软件包应声明与 Debian 中任何引用 /usr/bin/node 的软件包的关系。 nodejs 源包还应在 Priority: extra 提供 nodejs-legacy 二进制包,其中包含 /usr/bin/node 作为 /usr/bin/nodejs 的符号链接。存档中的任何包都不能依赖或推荐 nodejs-legacy 包,该包仅为上游兼容性而提供。此包声明还应声明与节点包的 Conflicts: 关系。 <...>
第 2 段是 OP 问题的实际解决方案。 OP 应该尝试安装此软件包,而不是手动进行符号链接。这是 Debian 软件包索引 website 中此软件包的链接。
它可以使用 sudo apt-get install nodejs-legacy
安装。
我没有找到任何关于 NPM 开发人员采用整个东西的信息,但我认为 npm
包将在某些时候得到修复,nodejs-legacy
将成为真正的遗产。
尝试将节点链接到 nodejs。首先找出nodejs在哪里
whereis nodejs
然后将节点软链接到nodejs
ln -s [the path of nodejs] /usr/bin/node
我假设 /usr/bin 在您的执行路径中。然后你可以通过在命令行中输入 node 或 npm 来进行测试,现在一切都应该工作了。
nodejs-legacy
软件包的 vbo's answer 更容易。
dpkg
,否则不要与 /usr/bin
混为一谈。正确的解决方案(如果您喜欢这种手动符号链接方法)是在 /usr/local/bin
中创建符号链接,该符号链接指定用于本地安装和覆盖。您在 /usr/bin
中手动执行的任何操作都可以并且将被包管理器覆盖,和/或会混淆它。
您还可以使用 NVM 或 Nodejs 版本管理器安装 Nodejs。使用版本管理器有很多benefits。其中之一是您不必担心这个问题。
指示:
sudo apt-get update
sudo apt-get install build-essential libssl-dev
安装必备软件包后,您可以从项目的 GitHub 页面下载 nvm 安装脚本。版本号可能不同,但一般情况下,您可以使用以下语法下载并安装它:
curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh
这将下载脚本并运行它。它会将软件安装到您的主目录 ~/.nvm
的子目录中。它还将必要的行添加到您的 ~/.profile
文件以使用该文件。
要访问 nvm 功能,您需要注销并重新登录,或者您可以获取 ~/.profile 文件,以便您当前的会话知道更改:
source ~/.profile
现在您已经安装了 nvm,您可以安装独立的 Node.js 版本。
要找出可供安装的 Node.js 版本,您可以键入:
nvm ls-remote
. . .
v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14
如您所见,撰写本文时的最新版本是 v0.11.14。您可以通过键入以下内容进行安装:
nvm install 0.11.14
通常,nvm 会切换到使用最近安装的版本。您可以通过键入以下内容明确告诉 nvm 使用我们刚刚下载的版本:
nvm use 0.11.14
当您使用 nvm 安装 Node.js 时,可执行文件称为 node。您可以通过键入以下内容查看 shell 当前使用的版本:
node -v
完整的教程可以在 here 中找到
usr/bin/node
。于是跑了sudo ln -s /home/www/.nvm/v0.10.36/bin/node /usr/bin/node
首先使用以下方式安装 nvm: curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash 运行命令 source ~/.profile 现在运行它,这将显示所有已安装或其他版本的软件包: nvm ls-remote 已安装的软件包将显示为绿色。安装您想要的任何版本:nvm install 6.0.0 检查未安装的位置:哪个节点检查当前版本:node -vn=$(which node); n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r $n/{bin,lib,share} /usr/local
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
source ~/.profile
将接受的答案与已折叠的评论中的 source ~/.profile
和之前的一些清理命令结合起来。之后您很可能还需要sudo apt-get install npm
。
对我来说,问题已解决,
sudo apt-get remove node
sudo apt-get remove nodejs
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo ln -s /usr/bin/nodejs /usr/bin/node
alias node=nodejs
rm -r /usr/local/lib/python2.7/dist-packages/localstack/node_modules
npm install -g npm@latest || sudo npm install -g npm@latest
这是我使用的另一种方法,因为我喜欢 n 以便在节点版本之间轻松切换。
在新的 Ubuntu 系统上,首先安装“系统”节点:
curl -sL https://deb.nodesource.com/setup | sudo bash -
然后全局安装 n 模块:
npm install -g n
由于首先安装了系统节点(上图),因此可以使用替代系统来干净地指向 n 提供的节点。首先确保替代系统没有节点:
update-alternatives --remove-all node
然后添加n提供的节点:
update-alternatives --install /usr/bin/node node /usr/local/bin/node 1
接下来添加系统提供的节点(使用 curl 安装的节点):
update-alternatives --install /usr/bin/node node /usr/bin/nodejs 2
现在使用交互式菜单选择 n 提供的节点(从以下命令提供的菜单中选择 /usr/local/bin/node
):
update-alternatives --config node
最后,由于 /usr/local/bin
在 PATH 中的优先级通常高于 /usr/bin
,因此如果要使替代系统节点有效,则必须创建以下别名(在您的 .bashrc 或 .zshrc 中输入);否则,在 /usr/local/bin 中使用 n 安装的节点始终优先:
alias node='/usr/bin/node'
现在您可以使用 n <desired node version number>
在节点版本之间轻松切换。
在 Linux Mint 17 上,我尝试了两种解决方案(创建符号链接或使用 nodejs-legacy
包)均未成功。
唯一对我有用的是使用 Chris Lea 的 ppa:
sudo apt-get purge node-*
sudo apt-get autoremove
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
这安装了节点版本 10.37 和 npm 1.4.28。之后,我可以在全球范围内安装软件包。
正如其他人已经提到的那样,我建议不要使用“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
#Go to home
cd ~
#run command
#New Script
wget https://raw.githubusercontent.com/deepakshrma/NodeJs-4.0-Reference-Guide/master/nodejs-installer.sh
bash nodejs-installer.sh -v lts
#here -v or --version can be sepecific to 0.10.37 or it could be latest/lts
#Examples
bash nodejs-installer.sh -v lts
bash nodejs-installer.sh -v latest
bash nodejs-installer.sh -v 4.4.2
here 的简单解决方案
curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash --
sudo apt-get install nodejs
您可以通过更改 setup_x.x 值来指定版本,例如设置为 setup_5.x
您的系统无法检测到路径节点 js 二进制文件。
1.哪个节点
2.然后将节点软链接到nodejs
ln -s [the path of nodejs] /usr/bin/node
我假设 /usr/bin 在您的执行路径中。然后你可以通过在命令行中输入 node 或 npm 来进行测试,现在一切都应该工作了。
卸载您拥有的任何节点版本
sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs-legacy
sudo apt-get --purge remove nodejs
安装 nvm(节点版本管理器)https://github.com/creationix/nvm
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash
现在您可以安装所需的任何版本的节点并在版本之间切换。
nvm
的人,请注意 nodejs-legacy 包是 v0.10.25。 (或者至少,这是我在尝试时看到的。)
我修复了它取消链接 /usr/sbin/node (链接到 ax25-node 包),然后我在命令行上使用它创建了到 nodejs 的链接
sudo ln -s /usr/bin/nodejs /usr/bin/node
因为诸如 karma 之类的包不适用于 nodejs 名称,但是将 karma 脚本的第一行从 node 更改为 nodejs,但我更喜欢一劳永逸地解决这个问题
对我来说,修复是删除 node* 包和 npm 包。
然后全新安装为:
sudo apt-get install autoclean
sudo apt-get install nodejs-legacy
npm install
sudo apt-get autoclean
与 sudo apt-get install autoclean
“相同”
问题不在安装程序中用 node 替换 nodejs 或将路径从 /usr/bin/nodejs 更改为 /usr/bin/node
这是您的节点没有正确安装,首先您需要卸载节点然后重新安装。要安装节点,这可能会帮助您http://array151.com/blog/nodejs-tutorial-and-set-up/
之后,您可以轻松安装软件包。要安装软件包,这可能会对您有所帮助
http://array151.com/blog/npm-node-package-manager/
您可以在 /usr/bin
中创建一个链接 ln -s nodejs
节点,希望这可以解决您的问题。
node -v // first check it's install or not
npm -v
sudo apt install npm
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash –
sudo apt-get install nodejs
然后检查
node -v or node –version
npm -v or npm –version
或者您可以删除 package.lock json 文件/node_modules 而不是运行 npm i
我希望它能正常工作
步骤:https://www.geeksforgeeks.org/installation-of-node-js-on-linux/
不定期副业成功案例分享
sudo apt-get install nodejs-legacy