无法在 Debian Stretch 上安装最新的 NodeJS

无法在 Debian Stretch 上安装最新的 NodeJS

我运行的是 Debian 9.3。我去了 NodeJS网站查看如何在我的计算机上安装 NodeJS v9.X 并运行提供的代码。

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

但终端却吐出了这样的消息:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
nodejs is already the newest version (4.8.2~dfsg-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

我的机器卡在 NodeJS v4.8.2 和 NPM v1.4.21 上。

如何升级到最新的 NodeJS 和 NPM?

更新

我按照@GAD3R 的指示进行操作。它仍然安装 v4.8.2。这是运行 GAD3R 的命令然后运行 ​​后得到的结果sudo apt install nodejs

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libuv1
The following NEW packages will be installed:
  libuv1 nodejs
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/3,524 kB of archives.
After this operation, 14.5 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Selecting previously unselected package libuv1:amd64.
(Reading database ... 141225 files and directories currently installed.)
Preparing to unpack .../libuv1_1.9.1-3_amd64.deb ...
Unpacking libuv1:amd64 (1.9.1-3) ...
Selecting previously unselected package nodejs.
Preparing to unpack .../nodejs_4.8.2~dfsg-1_amd64.deb ...
Unpacking nodejs (4.8.2~dfsg-1) ...
Setting up libuv1:amd64 (1.9.1-3) ...
Processing triggers for libc-bin (2.24-11+deb9u1) ...
Processing triggers for man-db (2.7.6.1-2) ...
Setting up nodejs (4.8.2~dfsg-1) ...
update-alternatives: using /usr/bin/nodejs to provide /usr/bin/js (js) in auto mode

当我运行时update-alternatives --config nodejs,终端打印update-alternatives: error: no alternatives for nodejs

==

当我跑步时apt-cache policy nodejs,我得到这个...

nodejs:
  Installed: 4.8.2~dfsg-1
  Candidate: 4.8.2~dfsg-1
  Version table:
     9.3.0-1nodesource1 500
        500 https://deb.nodesource.com/node_9.x stretch/main amd64 Packages
     8.9.3~dfsg-2 1
          1 http://ftp.us.debian.org/debian experimental/main amd64 Packages
     6.12.0~dfsg-2 500
        500 http://ftp.us.debian.org/debian unstable/main amd64 Packages
 *** 4.8.2~dfsg-1 990
        990 http://ftp.us.debian.org/debian stretch/main amd64 Packages
        100 /var/lib/dpkg/status

==

我跑了sudo /etc/apt/preferences,它直到现在还不存在,并在其中写道:

Package: *
Pin: release n=experimental
Pin-Priority: 100

Package: *
Pin: release n=unstable
Pin-Priority: 100

Package: *
Pin: release n=stable
Pin-Priority: 500

我重新运行了 GAD3R 帖子中的命令,但 Debian 仍然安装了 v4.8.2nodejs软件包。

答案1

4.8.2版本是通过apt以下方式安装的主要仓库

跑步:

apt purge nodejs
apt install lsb-release
apt install -y nodejs

验证安装的nodjs版本:

node --version
v9.3.0

版本npm

npm --version
5.5.1

问题出在 pin 优先级上,将 stable 版本 pin 到500

Package: *
Pin: release n=experimental 
Pin-Priority: 100

不稳定:

Package: *
Pin: release n=unstable
Pin-Priority: 100

还有稳定的:

Package: *
Pin: release n=stable
Pin-Priority: 500

问题通过以下方式解决:

打开 synaptic ,搜索 nodejs ,按 CTRL + E 然后选择nodsource1版本,然后应用更改。

答案2

我在 Pi3 Model B(带有 raspbianstretch 9.4)上遇到了同样的问题。首先,我尝试通过在 apt-get 命令中指定版本来强制安装 nodejs-v8:apt install nodejs=8.11.2~dfsg-1+b1。这对我不起作用,因为它导致了未满足的依赖关系:

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
nodejs : Depends: libnghttp2-14 (>= 1.25.0) but 1.18.1-1 is to be installed
         Depends: libuv1 (>= 1.18.0) but 1.9.1-3 is to be installed
         Recommends: nodejs-doc but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

GAD3R 接受的答案对我来说也不起作用。

然而,当我跑步时,apt-cache policy nodejs我得到了这个:

nodejs:
  Installed: 4.8.2~dfsg-1
  Candidate: 4.8.2~dfsg-1
  Version table:
     8.11.4-1nodesource1 500
        500 https://deb.nodesource.com/node_8.x stretch/main armhf Packages
     8.11.2~dfsg-1+b1 750
        750 https://mirror.nl.leaseweb.net/raspbian/raspbian testing/main armhf Packages
 *** 4.8.2~dfsg-1 900
        900 https://mirror.nl.leaseweb.net/raspbian/raspbian stretch/main armhf Packages
        100 /var/lib/dpkg/status

强制从测试存储库安装nodejs:

apt-get install nodejs -t testing

这真是太有效了!

node -v
v8.11.2

相关内容