为啥 Ubuntu 的 apt-get 包管理器中有旧版本的 nodejs 和 npm?
Posted
技术标签:
【中文标题】为啥 Ubuntu 的 apt-get 包管理器中有旧版本的 nodejs 和 npm?【英文标题】:Why does Ubuntu have old versions of nodejs and npm in their apt-get package manager?为什么 Ubuntu 的 apt-get 包管理器中有旧版本的 nodejs 和 npm? 【发布时间】:2016-04-11 18:17:15 【问题描述】:当我使用 apt-get 安装 nodejs 和 npm 时
sudo apt-get update
sudo apt-get install nodejs modejs-legacy npm
I have the versions
我得到以下版本
npm -v
1.3.10
nodejs -v
v0.10.25
我知道如何手动更新这些,但为什么 apt-get 包管理器有这些包的旧版本?
【问题讨论】:
与您的问题所表达的需求相关,您可能需要查看github.com/creationix/nvm,它会在用户空间中安装您想要的任何节点版本,并允许切换版本。它被认为是一种更好的模式,即使在生产中也是如此。 Ruby 和其他语言也使用此类技术(例如 rvm) 【参考方案1】:最好使用来自 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) 的包。
【讨论】:
这没有回答为什么的问题。 @SteveBennett 你是对的,它没有回答。我将更新我的答案以包括原因。谢谢:D 谢谢你:) 这是一种不安全的方法,不是推荐的 Ubuntu 方法。相反,请查看以下答案:askubuntu.com/a/711976/404188 请注意,该命令用于安装最新版本的 nodejs 4。请参阅为更高版本提供的链接。【参考方案2】:互联网上的其他说明会告诉您通过下载脚本并将其通过管道传输到 sudo
来安装节点 7.x。这减少了输入,但可能会给该脚本和任何可能已经破坏网站或设置 MITM 攻击根访问您的计算机的人提供。
由于主要 apt 存储库的维护人员在添加之前审核和测试包,因此他们可能需要一些时间来批准最新版本。您可以从独立维护的 repo 下载 node 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
【讨论】:
【参考方案3】:需要考虑的一点是,虽然使用 $(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"
【讨论】:
以上是关于为啥 Ubuntu 的 apt-get 包管理器中有旧版本的 nodejs 和 npm?的主要内容,如果未能解决你的问题,请参考以下文章
为啥Centos装上以后,执行apt-get命令提示没有该命令
为啥Centos装上以后,执行apt-get命令提示没有该命令