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

Why does Ubuntu have old versions of nodejs and npm in their apt-get package manager?

当我使用 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 包管理器有这些包的旧版本?

最好使用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) 的包。

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

因为主要 apt 存储库的维护者在添加它们之前审计和测试包,他们可能需要一些时间来批准最新版本。您可以从独立维护的 repo 下载节点 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

需要考虑的一件事是,虽然使用 $(lsb_release -sc) 添加存储库在 ubuntu 中有效,但它可能不适用于基于 Ubuntu 的发行版,例如 Linux薄荷糖。来自 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"

运行 进入同样的问题,在这里找到了解决方案。对不起,如果它看起来像是从其他地方复制的

wget -c https://nodejs.org/download/release/v17.3.1/node-v17.3.1-linux-x64.tar.gz
tar xvf node-v17.3.1-linux-x64.tar.gz 
mkdir  -p /etc/node/
mv node-v17.3.1-linux-x64/* /etc/node/


echo 'export NODEJS_HOME=/etc/node/bin' >> /etc/profile
echo 'export PATH=$NODEJS_HOME:$PATH' >> /etc/profile
source /etc/profile
nano /etc/profile