如何在Debian Jessie上安装最新的NodeJS?


29

我只是使用推荐的方法在Debian Jessie上安装了NodeJS和NPM:

apt-get install curl
curl -sL https://deb.nodesource.com/setup | bash -
apt-get install -y nodejs

但是,这是一个很旧的版本(节点v0.10.38和npm 1.4.28)。

关于安装最新版本的最简单方法的任何建议,例如,当前节点为v0.12.4,npm为2.7.4?从源安装是我唯一的方法吗?

Answers:


48

有一个可用于Node.js的安装脚本(请参阅安装说明):

# Adapt version number to the version you want
curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -
sudo apt-get install -y nodejs

一点评论:以我的拙见,这是一个非常糟糕的主意curl | sudo bash。您正在运行未使用root特权检查的脚本。它总是更好的下载脚本,通读一遍,检查是否有恶意命令,之后,运行它。但这只是我的两分钱。

按照手动安装过程,可以通过几个步骤来手动完成安装

  • 删除旧的PPA(如果适用)
  • 添加节点回购SSH密钥
  • 将节点仓库添加到 sources.list
  • 更新软件包列表并使用最喜欢的apt工具安装

5
操作,使用它,但是现在有setup_4.x...重做卷曲和易于获取吗?
彼得·克劳斯

3
由于您可能需要最新的实际版本,因此我建议访问他们的站点:github.com/nodesource/distributions
seniorpreacher15年

如果它来自与运行二进制文件的源相同的安全连接,您为什么不信任它

@ acidzombie24是正确的,但是即使您信任代码不是邪恶的代码,也总是有可能在脚本中犯错误,或者过时的脚本,或者您的配置有点奇怪。或者,也许您想以某种方式订购您的sources.list,而脚本则不然。无论如何,我也认为这是一种不好的做法,因此不应鼓励初学者(我的目标不是OP,但总的来说)。特别是当手动执行操作时,比检查脚本要直接得多。
杰罗姆

12

您可以从他们的网站下载最新版本的Node(4.2.2,而不使用Debian提供的软件包(0.12)。这也意味着您拥有npm的更新版本。我在Jessie上这样做没有任何问题。

.tar.gz从他们的网站下载该cd文件并进入该目录(文件名显然是我的下载文件所特有的):

$ tar -xzvf node-v4.2.2-linux-x64.tar.gz
$ cd node-v4.2.2-linux-x64

如果您查看bin文件夹,将看到node和npm所需的二进制文件:

$ ls node-v4.2.2-linux-x64/bin 
node  npm

现在,我将文件夹重命名为更易于跟踪的名称

$ mv node-v4.2.2-linux-x64 nodejs

如果您不希望使节点保持更新,则只需将该文件夹移动到您的bin位置之一(我使用~/bin),然后跳过下一步。

如果您希望能够轻松更新节点版本,则将nodejs文件夹移动到可以跟踪它的位置(~/nodejs也许?)。然后,您想要创建一个到您的bin位置之一的符号链接,以便可以从您的shell中使用这些二进制文件,而无需写出完整路径。

假设将nodejs文件夹放在主目录中,现在可以执行以下操作:

$ ln -s ~/nodejs ~/bin/nodejs

显然,这可以转到您想要的任何bin位置。我使用了主目录,因此它仅对我可用,但是您也可以轻松地执行以下操作:

$ ln -s ~/nodejs /usr/local/bin/nodejs

这将创建一个符号连接从在的NodeJS你的主目录文件夹到bin目录(这意味着在你的主文件夹反映通过其他地方的文件夹到该目录中的任何更新符号链接)。现在,您要确保包含nodejs目录的bin文件夹在您的$PATH环境变量中,因此请~/.profile在您的主目录中打开该文件。您要将其添加到该文件的底部(如果未使用,则更改路径~/bin/):

# Set the node PATH if it exists
if [ -d "$HOME/bin/nodejs/bin" ] ; then
    PATH="$HOME/bin/nodejs/bin:$PATH"
fi

这将检查目录是否存在,如果存在,则将其添加到PATH中。我用过,zsh所以我只更新了一行~/.zshrc

export PATH="$HOME/bin/nodejs/bin:$PATH"

关闭您的终端并重新打开,然后键入以下内容进行检查:

$ node -v
v4.2.2

$ npm -v
2.14.7

通过创建符号链接,现在意味着将来可以.tar.gz从Node.js网站下载新~/nodejs文件,并将其解压缩到,$PATH 环境变量中可用的二进制文件将自动更新。


这对我很有效,因为它也可以正常工作。
artfulrobot

4

就我而言,我执行了推荐的shell命令:

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

问题是bash脚本没有更新我的APT固定,因此apt-get从debian.org源而不是从nodesource.com安装了默认的旧Debian软件包。

验证这是问题所在apt-cache policy nodejs。你应该看到类似Candidate: 6.10.2-1nodesource1~jessie1而不是Candidate: 0.10.29~dfsg-2

要将pin优先级设置为nodesource,请添加一个/etc/apt/preferences.d/名为node或具有以下内容的文件:

Package: nodejs
Pin: release o=Node Source
Pin-Priority: 1200

保存并运行apt-get cache update。然后再试apt-cache policy nodejs一次。如果候选人看起来正确,请照常安装apt-get install nodejs


apt-get cache update回来E: Invalid operation cache所以我跑了sudo aptitude update
user394

2

您可以 按照官方的node.js文档进行操作,使用软件包管理器安装最新版本。

Node.js v6:

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

Node.js v7:

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs

运行后者,在我的系统上安装了节点v7.5.0和npm v4.1.2。无论nodenodejs别名是为节点自动启用。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.