如何在Ubuntu/Debian上安装特定版本的Node?

129
我想在Ubuntu 12.04上安装NodeJS版本0.8.18。我尝试安装最新版本,然后使用nvm回滚到0.8.18,但是当我运行我的代码时,显然安装的软件包和这两个版本(最新版本和0.8.18)之间存在一些问题。由于我不知道如何解决这个问题,我将机器上的Node安装清除,并考虑直接安装我感兴趣的版本(v0.8.18)。

http://nodejs.org/dist/v0.8.18/ 有一些发行文件,你尝试过了吗? - Joachim Isaksson
嗨,其实不是。我并不是很熟悉Ubuntu和dist文件,所以我甚至不知道如何使用它们。不管怎样,谢谢,我正在查看如何操作并尝试使用它们! - Masiar
1
从0.8.x到0.10.x有API更改。因此,请务必检查更改内容。此外,不仅是Node,例如“express”等各种软件包也有API更改。 - user568109
17个回答

134

2
不是很喜欢单个字母的名称,但这个解决方案绝对有效且非常容易! - aroth
11
你可以给它取一个别名:alias noonoonaanaanoonoo='n' ;) - Rimian
2
对我没用。但是经过一些搜索,一个同样简单的解决方案起作用了:https://dev59.com/9lcO5IYBdhLWcg3wkif2#45584004 - FlorianH
1
在其他地方找到了类似的答案,但是那里缺少了重启语句,我花了几个小时才看到你的答案,重新启动了机器,最终,node指向了更新的版本。 - y_159
1
只有这个在Ubuntu 22.04上对我有效。谢谢! - undefined
显示剩余2条评论

54

NVM (Node Version Manager)

https://github.com/nvm-sh/nvm

Benefits:

  • Allows you to easily switch between multiple Node versions without using sudo

  • Similar to Ruby RVM and Python Virtualenv, which are considered best practice in their respective communities

  • Downloads pre-compiled binaries when available, otherwise downloads the source code and compiles it for you

Tested on Ubuntu 17.10:

curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | sh
source ~/.nvm/nvm.sh
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

对于最新的长期支持版本(如果您可以选择推荐使用):

nvm install --lts
nvm use --lts
npm --version
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

通过这种设置,你将获得例如:

which node

给出:
/home/ciro/.nvm/versions/node/v0.9.0/bin/node

并且:

which vaca

给出:
/home/ciro/.nvm/versions/node/v0.9.0/bin/vaca

如果我们想使用全局安装的模块:

npm link vaca
node -e 'console.log(require.resolve("vaca"))'

给出:
/home/ciro/.nvm/versions/node/v0.9.0/lib/node_modules/vaca/index.js

如上所述:

因此,我们可以看到所有内容都完全包含在特定的 Node 版本中。

对于项目来说,您最好只使用在 node_modules 下安装的本地包和 npx 可执行文件,以便能够在项目间具有独立的版本,全局使用主要用于 Node 可执行文件本身和不特定于任何项目的全局 CLI 实用程序。

设置 NPM 版本

简单来说:

npm install npm@6.14.13 -g

可执行文件被放置在当前 NVM 版本内部,因此一切都保持良好的隔离,例如:

which npm

类似于这样的输出:

/home/ciro/.nvm/versions/node/v14.17.0/bin/npm

如何使用 nvm 更改 npm 的版本?


1
至少最近版本的 nvm(0.35)会自动更新 .bashrc。它会在其中添加 nvm.sh 的源和 bash 自动补全。 - David Ferenczy Rogožan
@DawidFerenczyRogožan 是的,谢谢,我已经在答案中澄清了。 - Ciro Santilli OurBigBook.com
1
6年后(几乎)仍然是我能找到的最好、最简洁的答案,太棒了! - Joel Gray

48

Chris Lea 在他的 ppa 仓库中有版本为 0.8.23 的软件包。

此软件包可让您将一个仓库添加到 apt-get:(您也可以手动执行此操作)

sudo apt-get install software-properties-common

添加Chris Lea的仓库:

sudo apt-add-repository ppa:chris-lea/node.js-legacy

更新apt-get:

sudo apt-get update

安装 Node.js:

sudo apt-get install nodejs=0.8.23-1chl1~precise1

我认为(请随意编辑)如果您只添加了node.js-legacy,则版本号是可选的。如果同时添加了legacy和ppa / chris-lea / node.js,则很可能需要添加版本号。


17
sudo apt-cache showpkg nodejs - 你可以使用这个命令来显示可用的版本 sudo apt-get install npm - 将npm管理器添加到您的计算机 - Pencroff
2
如果您想安装更新版本,例如0.11.x:(1)sudo apt-add-repository ppa:chris-lea/node.js-devel(2)更新:运行sudo apt-get update(3)然后,列出最新的软件包:sudo apt-cache showpkg nodejs(4)例如,要安装0.11.14:sudo apt-get install nodejs=0.11.14-1chl1~trusty1这通常是安装支持harmony的Node的好方法。记得在运行Node时使用--harmony标志。 - SilentSteel
2
你怎么才能弄清楚版本号中的这一部分:-1chl1~precise1 - Snowcrash

42
可以使用 dpkg 从 nodejs 官方发行版安装所需版本的 nodejs。 例如,当前最新的 4.x 版本是 4.2.4,但您也可以安装先前的 4.2.3 版本。
curl -s -O https://deb.nodesource.com/node_4.x/pool/main/n/nodejs/nodejs_4.2.3-1nodesource1~trusty1_amd64.deb
sudo apt-get install rlwrap
sudo dpkg -i nodejs_4.2.3-1nodesource1~trusty1_amd64.deb

1
由于某些原因,curl命令对我无效,所以我使用了wget。但整个过程都很顺利。谢谢。 - Ulysses Alves

23

尝试这种方式。这对我有效。

  1. wget nodejs.org/dist/v0.10.36/node-v0.10.36-linux-x64.tar.gz(下载文件)

  2. 进入Node.js二进制文件所在的目录,然后运行以下命令:sudo tar -C /usr/local --strip-components 1 -xzf node-v0.10.36-linux-x64.tar.gz,将Node.js二进制包安装在“/usr/local/”中。

  3. 您可以检查:

$ node -v
 v0.10.36 
$ npm -v
 1.4.28

15
在Ubuntu操作系统中,可以使用nvm安装特定版本的Node.js。请安装nvm。
sudo apt install curl 
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash 
source ~/.bashrc
使用命令 nvm install 加上版本号来安装特定版本的 Node。
nvm install 10.15.2
node -v 

什么是“源代码”? - Thanasis Ioannidis

9

我想许多来到这里的人是在寻找如何将此添加到Dockerfile中。

RUN set -x \
    && curl -sL 'https://deb.nodesource.com/setup_16.x' | bash - \
    && apt-get -y install nodejs \
    && ln -s /usr/bin/nodejs /usr/local/bin/node

如何能够准确指定版本呢? - Nick Roz
1
看起来nodesource只使用主要版本:https://github.com/nodejs/Release - expelledboy

9

假设你想要安装 Node 10,

首先,下载并执行 Node.js 10.x 的安装程序:

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -

这将为官方Node.js 10.x仓库添加源文件,并获取签名密钥。
安装程序完成后,您需要安装(或升级)Node.js:
sudo apt install nodejs

这是一个不错的脚本,但是它已经过时了,请查看最新版本的脚本:https://github.com/nodesource/distributions/tree/master#installation-instructions。 - undefined

6

此ppa也提供版本0.10

apt-add-repository ppa:chris-lea/node.js

使用以下命令安装nodejs:

apt-get install nodejs=0.10.25-1chl1~precise1

感谢我的朋友Julian Xhokaxhiu


7
这是在Ubuntu 14.10上给我报错的命令:E:未找到“nodejs”的版本“0.10.15”。 - Rahul_Dabhi

5

是的,这是一个重复的答案,但我坚持使用n模块来安装特定版本(以下命令安装node版本6.9.5)。

npm install -g  n
n 6.9.5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接