如何安装最新版本的node.js?

如何在Ubuntu上安装最新的node.js?我找了很多地方,但是找不到任何信息。有没有适用于Ubuntu的node.js软件包,还是我必须自己编译它?

在2011年可以,但是现在(2023-2011>10!)没有消息?为什么UBUNTO不提供新鲜稳定的apt install nodejssnap install node更好吗? - undefined
我不明白。那个问题已经得到了回答 - 并且在2011年已经有了一个被接受的答案。那么它还有什么用呢? - undefined
@kanehekili 答案很糟糕,有很多批评和现今的问题,需要更新或者提供新的答案(例如基于snap)。 - undefined
16个回答

根据Node.js网站

# Using Debian/Ubuntu
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs            

然后,你将拥有最新版本的Node.js。
如果你不喜欢使用curl <url> | bash -,或者正在使用不支持的发行版,你可以尝试手动安装

1@muru 完成了...正在等待同行评审。顺便说一下,NodeSource是node.js团队推荐的。 - retrixe
1@IAnsari 听起来很棒! - jrg
哇哈哈!你让我开心到爆!\m/ - Sri Harsha Kappala
16-1 因为这个解决方案涉及将curl导入超级用户shell。请有人提供一个不使用curl的bash脚本来添加存储库的解决方案。 - nickguletskii
2@nickguletskii 这是 nodejs 项目提供的安装指南。 - jrg
20@James 我明白。然而,说这些指示有缺陷简直是轻描淡写(虽然你可以对几乎所有的node.js都这么说)。虽然情况没有那么糟糕(至少脚本是通过https提供的),但仍可能导致部分下载,以至于rm -rf /usr/blah/blah可能变成rm -rf /usr。这只是一个非常糟糕的做法,我不认为“这是开发人员提供的指示”是一个好借口。 - nickguletskii
2@nickguletskii 相信我 - 我了解这些危险。 这是个糟糕的想法,但只要开发人员支持它作为安装指南,我们就必须应对。 - jrg
4我的问题是安装了nodejs而不是node.. 所以,如果在安装nodejs后,我无法使用"node"访问nodejs,只能使用"nodejs"。 - Rizwan Patel
@nickguletskii: 在堆栈底部查看我的答案 - serv-inc
1@RizwanPatel:你可以安装nodejs-legacy软件包。请参考http://askubuntu.com/a/663050/438156。 - serv-inc
朋友们,根据在这里找到的指示,答案已经更新到Node.js 6.x版本了... https://opensourceinside.blogspot.in/2015/10/how-to-install-nodejs-latest-version.html - Yuvaraj V
我想使用ansible安装Node.js。这个指南(来自2014年)https://serversforhackers.com/an-ansible-tutorial将https://deb.nodesource.com/setup_7.x的bash脚本拆分成单独的组件。 - icc97
实际上,那篇Servers for Hackers的文章现在已经过时,但你只需要将deb.nodesource.com/node替换为deb.nodesource.com/node_7.x以获取最新的(2017 / v7)版本。 - icc97
@RizwanPatel ln -s /usr/bin/nodejs /usr/bin/node - Jacksonkr
我刚刚完成了setup_9.x。它基本上是这样做的:wget -qO- https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - echo 'deb https://deb.nodesource.com/node_9.x $(lsb_release -c -s) main' > /etc/apt/sources.list.d/nodesource.list echo 'deb-src https://deb.nodesource.com/node_9.x $(lsb_release -c -s) main' >> /etc/apt/sources.list.d/nodesource.list - user1182474
然而,如果您已经尝试过标准软件包或ppa,那么运行setup_9.x可能会更好,它会尝试进行一些清理工作。 - user1182474
请使用<...>setup_18.x代替。 - alainsanguinetti
已弃用:https://deb.nodesource.com/setup_20.x ... 那么哪里是可靠的来源? - undefined

Node 是其中一个较容易构建的项目。只需更改版本,因为版本会持续变化。

浏览http://nodejs.org/dist/latest/以了解最新的软件包版本。

cd /usr/local/src
wget http://nodejs.org/dist/latest/node-v7.2.1.tar.gz
tar -xvzf node-v7.2.1.tar.gz
cd node-v7.2.1
./configure
make
sudo make install
which node

你应该看到 /usr/local/bin/node

2在Ubuntu 14.04 LTS上测试了Node.js v0.10.30,运行得非常完美。要获取最新版本,请访问http://nodejs.org/download/。查看所有版本请访问:https://github.com/joyent/node/releases。 - Lucio Paiva
12敬启者,NPM也将自动构建和安装。 - Lucio Paiva
刚刚在Ubuntu 16.04上使用了它,效果非常好。 - Mubashar Abbas
cd /usr/local/src 是必要的吗?我在下载文件夹中手动安装了 tar.gz 文件并执行了其他步骤。 - mr.loop
这个答案比被接受的那个答案好太多了。 - ghostly_s
错误:bash:./configure:没有那个文件或目录 - Frank

是的,去Synaptic,搜索"nodejs"。这些软件包位于宇宙仓库中。如果你正在进行开发,我建议你安装以nodejs开头的所有软件包。

万一那不起作用:

sudo apt-get install g++ curl libssl-dev apache2-utils git-core
git clone git://github.com/joyent/node.git
cd node
./configure
make
sudo make install

那将会下载node.js的源代码,编译并安装它。

1"sudo apt-get build-dep nodejs"比你的"apt-get install"命令更合适吗?" - freddyb
@freddyb 这样做不会有任何损失。 - nickguletskii
谢谢你的回答 - 不过,最近我发现node.js有一个“官方非官方”的PPA - 所以我用那个回答了,因为把你的整个回答都改成“正确”的指示不太礼貌。 - jrg
2然而,与sudo apt-get install nodejs相比,我更喜欢这个解决方案,因为后者无法提供最新版本。 - Rubens Mariuzzo
1@rubens 如果你使用我上面描述的PPA,就不会有这个问题。 - jrg
我建议不要像这样从存储库的最新版本构建,因为代码可能不稳定。最好从最新的发布版本开始构建,就像这里所提出的那样。 - Lucio Paiva
我认为另一个可能的问题是,这样绕过了apt,因此每当你想安装依赖于node的东西时,apt都会想要安装来自Universe的node版本。如果你允许它这样做,很可能会导致严重的破坏(但至少会失去你的最新版本的node)。 - Tamás Szelei

NVM(Node Version Manager)

https://github.com/creationix/nvm

curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | sh
source ~/.nvm/nvm.sh
nvm install --lts
nvm use --lts
npm install --global vaca
vaca

由于每个新的shell都必须进行资源定位,您可能希望将以下内容添加到您的.bashrc文件中:
f="$HOME/.nvm/nvm.sh"
if [ -r "$f" ]; then
  . "$f" &>'/dev/null'
  nvm use --lts &>'/dev/null'
fi

优点:

  • 允许您使用多个版本的Node,无需sudo

  • 类似于Ruby RVM和Python Virtualenv,在Ruby和Python社区被广泛认为是最佳实践

  • 在可能的情况下下载预编译的二进制文件,如果不行,则下载源代码并为您编译一个

我们可以轻松切换Node版本:

nvm install 0.9.0
nvm install 0.9.9
nvm use 0.9.0
node --version
#v0.9.0
nvm use 0.9.9
node --version
#v0.9.9

由于这个问题中有“最新”一词,而NodeJS的最新发布版本现在是v0.12.2(截至今天),如果你想安装这个版本,你需要运行以下命令。
# 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

更新

NodeJS发布了v5.8.0,但我仍然找不到安装ppa的方法。因此,我使用NVM进行安装,具体步骤如下:

首先安装nvm

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.26.1/install.sh | bash

然后安装NodeJS v5.8.0
nvm install v5.8.0

更新2: 对于那些喜欢PPA的人来说
https://github.com/nodesource/distributions#debinstall

确认。这是目前在Ubuntu上更新节点的方法。 - jhohlfeld
来源:https://nodesource.com/blog/nodejs-v012-iojs-and-the-nodesource-linux-repositories - AlonL
我从这个错误中得到了一个错误:W: 无法从代理服务器获取 https://deb.nodesource.com/node_0.12/dists/trusty/main/source/Sources,连接后收到 HTTP 代码 403 — 这个在 apt-cacher-ng 上不起作用吗? - detly
1将curl管道传输到超级用户shell的-1。 - Josh Milthorpe
@JoshMilthorpe 谢谢!是的,我知道管道问题。顺便说一下,这不是关于管道的超级用户问题。但是使用nvm来管理多个NodeJS版本非常非常流行。 - Nur Rony

一般来说,从URL加载任意数据到根shell会话中并不是一个好主意,我希望人们能停止将其作为解决方案推销给所有问题的做法 - "请运行我发送给你的脚本,顺便说一句 - 我有座桥可能会让你感兴趣"。
作为替代方案,这里是“Ubuntu方式”完成相同任务的方法 - 基本上就是Node Source脚本自动执行的一切,但在这里你可以看到系统如何被更新以及了解哪些仓库和密钥被添加到你的系统配置中。
apt-key adv --keyserver keyserver.ubuntu.com --recv 68576280
apt-add-repository "deb https://deb.nodesource.com/node_7.x $(lsb_release -sc) main"
apt-get update
apt-get install nodejs

这是最新版本(撰写时)的Nodejs版本7。对于LTS版本(6),您应该添加的存储库URL是https://deb.nodesource.com/node_6.x。其他版本也可以通过简单更改存储库URL来获取-请参阅nodesource.com文档以了解详细信息。
请注意,如果您使用的是Trisquel等替代Ubuntu发行版,则$(lsb_release -sc)命令可能无法工作,因此您需要将其替换为兼容的Ubuntu版本名称,例如xenial

  1. 官方仓库(15.04)中有一个 nodejs 包。还可以考虑使用 nodejs-legacy 来代替 node 命令。
  2. 要更新到最新版本,请使用通过 npm 安装的 n 包:

    sudo npm cache clean -f
    sudo npm install -g n
    sudo n stable
    
请参考这个 SO 问题,了解 NVM 和 N 的比较。

sudo n latest将安装最新版本的Node.js。 - Shubham Dixit

安装snap软件包

在Ubuntu上安装Node.js最简单的方法是使用snap软件包。只需在Ubuntu软件商店中搜索node并安装第一个即可。

Node.js on Ubuntu Software

或者如果你更喜欢使用命令行:
sudo snap install node --classic 

备用方法:NVM

如果由于某种原因无法使用snaps,比如在WSL环境中,Node Version Manager(NVM)是一个不错的选择。与从PPA或第三方仓库升级Ubuntu上的node软件包到不受支持的版本相比,NVM更安全,这可能会导致apt软件包管理系统中的冲突或损坏。与NVM相比,通过tarballs进行手动安装更难以维护和升级。按照以下步骤使用NVM安装最新的node:

  1. 安装 NVM

    在终端中运行以下命令:

    wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
    
  2. 安装 Node.js

    NVM 安装完成后,关闭并重新打开终端。然后运行以下命令:

    nvm install node
    
  3. 检查 Node.js 版本

    运行以下命令:

    node --version
    npm --version
    
如果一切顺利,您将在输出中看到最新的node和npm版本。就是这样,node已经安装好并准备运行了!

@jrg的答案是正确的,但是Chris Lea's的Launchpad PPA将不再支持Node.js v0.12及以上版本。因此,要安装最新版本的Node.js,请根据nodesource博客中的文章joyent/node从新的nodesource PPA进行安装。
首先:
curl -sL https://deb.nodesource.com/setup | sudo bash -

这个脚本将会:
  1. 清理旧的 PPA 的引用,如果您已经在使用它
  2. 将 NodeSource 签名密钥添加到您的密钥环中
  3. 将 deb.nodesource.com 添加到您的 APT 源中
  4. 使用新源执行 apt-get 更新

然后安装 Node.js:

sudo apt-get install -y nodejs

更新: 根据 nodesource 博客中的帖子

要安装 nodejs 版本 0.12.X

你需要运行以下命令:

curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -

要安装nodejs版本0.10.X,你需要运行以下命令:
curl -sL https://deb.nodesource.com/setup_0.10 | sudo bash -

然后
sudo apt-get install -y nodejs

我总是对使用非官方的PPA持怀疑态度 - 通常情况下都能正常运作,但我希望在我使用的发行渠道和项目之间有一定的官方关联程度...
就个人而言,这是我在安装Node时获得最大回报的资源,有很多好方法可以参考 - https://gist.github.com/isaacs/579814