3

I run Debian 9.3. I went to the NodeJS website to see how to install NodeJS v9.X on my machine and ran the code provided.

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

But the terminal spit out this message:

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.

My machine is stuck with NodeJS v4.8.2 and NPM v1.4.21.

How do I upgrade to the latest NodeJS and NPM?

UPDATE

I followed @GAD3R's instructions. It still installs v4.8.2. Here's what I get after running GAD3R's commands then running 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

When I run update-alternatives --config nodejs, the terminal prints update-alternatives: error: no alternatives for nodejs

==

When I run apt-cache policy nodejs, I get this...

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

==

I ran sudo /etc/apt/preferences, which did not exist until now, and wrote this in it:

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

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

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

I re-ran the commands from GAD3R's post, but still Debian installed v4.8.2 of nodejs package.

3

The 4.8.2 version is installed through apt from the main repo.

run:

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

Verify the installed nodjs version:

node --version
v9.3.0

The npm version:

npm --version
5.5.1

The problem come from the pin priority , pin the stable release to 500

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

Unstable:

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

And the stable:

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

The problem is solved by:

Open synaptic , search for nodejs , press CTRL + E then choose the nodsource1 version then apply changes.

|improve this answer|||||
  • Still gives me the same nodejs version, but no npm. – Username Dec 25 '17 at 17:37
  • @Username can you add the output of update-alternatives --config nodejs to the question , please. – GAD3R Dec 25 '17 at 17:39
  • 1
    Running that command, the terminal prints "update-alternatives: error: no alternatives for nodejs" – Username Dec 25 '17 at 17:42
  • @Username Please check your Pin-Priority , maybe it is configured to install the packages from the stable release. please add the output of apt-cache policy nodejs – GAD3R Dec 25 '17 at 17:49
  • Added the output to my question – Username Dec 25 '17 at 17:53
3

I had the same problem on a Pi3 Model B (with raspbian stretch 9.4). First I tried to force installation of nodejs-v8 by specifying the version in the apt-get command: apt install nodejs=8.11.2~dfsg-1+b1. This did not work for me because it resulted in unmet dependencies:

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.

The accepted answer of GAD3R did also not work for me.

However when I ran apt-cache policy nodejs I got this:

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

Forcing the installation of nodejs from the testing repository:

apt-get install nodejs -t testing

This worked like a charm!

node -v
v8.11.2
|improve this answer|||||
  • 1
    The problem is that with Username's output, the 9.3 is also in the main repo based on the output. (-t experimental would at least install 8.9.3). A pin with origin instead should work... – Gert van den Berg Sep 3 '18 at 6:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.