为什么Ubuntu在apt-get包管理器中有旧版本的nodejs和npm?

时间:2016-01-07 11:16:51

标签: node.js ubuntu npm apt-get

当我使用apt-get

安装nodejs和npm时
D

我得到以下版本

sudo apt-get update
sudo apt-get install nodejs modejs-legacy npm
I have the versions

我知道如何手动更新这些内容,但为什么apt-get软件包管理器会使用这些软件包的旧版本?

3 个答案:

答案 0 :(得分:16)

最好使用来自nodesource的ppa。他们在保持更新方面做得非常出色,不仅提供LTS,还提供最新版本的节点。 https://nodejs.org/en/download/package-manager/#debian-and-ubuntu-based-linux-distributions

就像从你的cli中运行它一样简单:

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

更新:

包管理器具有旧版本二进制文件的为什么的原因是由于所提供的包的维护者需要时间来正确构建和测试具有更新版本的新版本。

好处是您可以从其他存储库(ppa)使用和安装软件包。

答案 1 :(得分:0)

互联网上的其他说明将告诉您通过下载脚本并将其传输到sudo来安装节点7.x.这可以减少输入,但可能会给该脚本以及可能已经破坏网站或设置MITM攻击root权限的任何人访问您的计算机。

由于主要的apt存储库审核和测试包的维护者在添加它们之前,它们可能需要一些时间才能批准最新版本。您可以从独立维护的仓库下载节点7.x:

我从this answer

复制粘贴
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 68576280
sudo apt-add-repository "deb https://deb.nodesource.com/node_7.x $(lsb_release -sc) main"
sudo apt-get update
sudo apt-get install nodejs

答案 2 :(得分:0)

要考虑的一件事是,虽然使用$(lsb_release -sc)添加存储库在ubuntu中工作,但它可能不适用于基于Ubuntu的发行版,例如Linux Mint。来自nodesource的脚本执行从基于Ubuntu的分发名称到相应的Ubuntu分发名称的转换。

例如:“Linux Mint”“sylvia”映射到“Ubuntu”“xenial”

这意味着如果您想使用基于Ubuntu的发行版中的响应中所示的指令,则需要将$(lsb_release -sc)替换为实际的基本Ubuntu发行版。

例如,要在Linux Mint sylvia中安装,您需要输入

sudo apt-add-repository "deb https://deb.nodesource.com/node_7.x xenial main"