How to install a specific version of Node on Ubuntu/Debian?
Asked Answered
D

17

137

I would like to install NodeJS version 0.8.18 on Ubuntu 12.04. I tried to install the newest version and then reverting to 0.8.18 by using nvm, but when I run my code apparently there is some problem with the packages installed and the two versions (latest and 0.8.18). Since I don't know how to solve that problem, I cleaned the machine from the Node installation and thought about installing directly the version I'm interested in (v0.8.18).

Dissertation answered 3/6, 2013 at 13:32 Comment(3)
nodejs.org/dist/v0.8.18 has some dist files, did you try those?Assizes
Hi, not really. I'm not really into Ubuntu and dist files, so I don't even know how to use them. Anyways thanks, I'm checking how to do it and see if I can use them!Dissertation
There is API change from 0.8.x to 0.10.x. So be sure to check the changes. Also not just node, various packages for e.g. express have API changes too.Grimbal
T
48

Chris Lea has 0.8.23 in his ppa repo.

This package let you add a repository to apt-get: (You can also do this manually)

sudo apt-get install software-properties-common

Add Chris Lea's repository:

sudo apt-add-repository ppa:chris-lea/node.js-legacy

Update apt-get:

sudo apt-get update

Install Node.js:

sudo apt-get install nodejs=0.8.23-1chl1~precise1

I think (feel free to edit) the version number is optional if you only add node.js-legacy. If you add both legacy and ppa/chris-lea/node.js you most likely need to add the version.

Trisoctahedron answered 3/6, 2013 at 17:23 Comment(3)
sudo apt-cache showpkg nodejs - you can use this command for show available versions sudo apt-get install npm - add npm manager to your computerCattish
If you're looking to install newer versions, like 0.11.x: (1) sudo apt-add-repository ppa:chris-lea/node.js-devel (2) Update: run sudo apt-get update (3) Then, to list the latest packages: sudo apt-cache showpkg nodejs (4) For example, to install 0.11.14: sudo apt-get install nodejs=0.11.14-1chl1~trusty1 This is often a great way to install Node with harmony support. Remember to use the --harmony flag when you run Node.Historiography
How the heck do you figure out this part of the version: -1chl1~precise1?Georgena
L
142

The n module worked for me.

Run this code to clear npm’s cache, install n, and install the latest stable version of Node:

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

See: http://www.hostingadvice.com/how-to/update-node-js-latest-version/
And: https://www.npmjs.com/package/n

To install a specific version of node:

sudo n 18.17.1

To check what version:

node -v

You might need to restart

Lepidus answered 17/8, 2017 at 3:16 Comment(6)
Not a huge fan of the single-letter name, but this solution definitely works and is trivially easy!Arietta
You could always alias it: alias noonoonaanaanoonoo='n' ;) `Lepidus
Didn't work for me. But after some searching, a similarly simple solution that worked was this: https://mcmap.net/q/168394/-nodejs-always-installing-4-2-6Strung
Found a similar answer somewhere else but the restart statement was missing there, it took me hours until I saw ur answer, restarted the machine, and finally, node was pointing to the newer version.Bournemouth
Only this worked for me in Ubuntu 22.04. Thanks!Agc
I am in the same boat as stackoverflow.com/users/12923941/pwj. This is a way better solution than others out there for Ubuntu 22.04 LTS. Thank you!Disagreeable
H
59

NVM (Node Version manager)

https://github.com/nvm-sh/nvm

Advantages:

  • allows you to use multiple versions of Node and without sudo

  • is analogous to Ruby RVM and Python Virtualenv, widely considered best practice in Ruby and Python communities

  • downloads a pre-compiled binary where possible, and if not it downloads the source and compiles one for you

Tested in Ubuntu 17.10:

curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
source ~/.nvm/nvm.sh
nvm install 0.9.0
nvm install 0.9.9
nvm use 0.9.0
node --version
#v0.9.0
nvm use 0.9.9
node --version
#v0.9.9

For the particular case of the most recent long term support version (recommended if you can choose):

nvm install --lts
nvm use --lts
npm --version
npm install --global vaca
vaca

Since the sourcing has to be done for every new shell, the install script hacks adds some auto sourcing to the end of your .barshrc. That works, but I prefer to remove the auto-added one and add my own:

f="$HOME/.nvm/nvm.sh"
if [ -r "$f" ]; then
  . "$f" &>'/dev/null'
  nvm use --lts &>'/dev/null'
fi

With this setup, you get for example:

which node

gives:

/home/ciro/.nvm/versions/node/v0.9.0/bin/node

and:

which vaca

gives:

/home/ciro/.nvm/versions/node/v0.9.0/bin/vaca

and if we want to use the globally installed module:

npm link vaca
node -e 'console.log(require.resolve("vaca"))'

gives:

/home/ciro/.nvm/versions/node/v0.9.0/lib/node_modules/vaca/index.js

as mentioned at:

so we see that everything is completely contained inside the specific node version.

For projects however, you are better off just using packages installed locally under node_modules and npx for executable to be able to have independent versions across projects, global usage is mostly for the Node executable itself and global CLI utilities not specific to any project.

Setting the NPM version

Simply:

npm install [email protected] -g

The executable is placed inside the current NVM version, so everything remains nice and isolated, e.g.:

which npm

gives something like:

/home/ciro/.nvm/versions/node/v14.17.0/bin/npm

How can I change the version of npm using nvm?

Hustings answered 19/11, 2017 at 11:50 Comment(5)
At least the recent version of nvm (0.35) is updating .bashrc automatically. It appends there sourcing of nvm.sh and also bash completions.Loni
@DawidFerenczyRogožan yes, thanks, I've clarified that in the answer.Hustings
6 years later (nearly) still best most concise answer I could find, great stuff!Coulombe
6 years and a month later, i got spanked for not reading instructions. For node 18, it should be piped to "bash" I think. says hereRookery
@RichardDomingo thanks updated, yes, their error message is quite funny.Hustings
T
48

Chris Lea has 0.8.23 in his ppa repo.

This package let you add a repository to apt-get: (You can also do this manually)

sudo apt-get install software-properties-common

Add Chris Lea's repository:

sudo apt-add-repository ppa:chris-lea/node.js-legacy

Update apt-get:

sudo apt-get update

Install Node.js:

sudo apt-get install nodejs=0.8.23-1chl1~precise1

I think (feel free to edit) the version number is optional if you only add node.js-legacy. If you add both legacy and ppa/chris-lea/node.js you most likely need to add the version.

Trisoctahedron answered 3/6, 2013 at 17:23 Comment(3)
sudo apt-cache showpkg nodejs - you can use this command for show available versions sudo apt-get install npm - add npm manager to your computerCattish
If you're looking to install newer versions, like 0.11.x: (1) sudo apt-add-repository ppa:chris-lea/node.js-devel (2) Update: run sudo apt-get update (3) Then, to list the latest packages: sudo apt-cache showpkg nodejs (4) For example, to install 0.11.14: sudo apt-get install nodejs=0.11.14-1chl1~trusty1 This is often a great way to install Node with harmony support. Remember to use the --harmony flag when you run Node.Historiography
How the heck do you figure out this part of the version: -1chl1~precise1?Georgena
C
42

It is possible to install specific version of nodejs from nodejs official distribution with using dpkg.

For example, currently recent 4.x version is 4.2.4, but you can install previous 4.2.3 version.

curl -s -O https://deb.nodesource.com/node_4.x/pool/main/n/nodejs/nodejs_4.2.3-1nodesource1~trusty1_amd64.deb
sudo apt-get install rlwrap
sudo dpkg -i nodejs_4.2.3-1nodesource1~trusty1_amd64.deb
Cisneros answered 31/12, 2015 at 2:9 Comment(1)
For some reason the curl command didn't work for me, so I used wget instead. But the process as a whole worked fine. Thank you.Autoradiograph
F
24

Try this way. This worked me.

  1. wget nodejs.org/dist/v0.10.36/node-v0.10.36-linux-x64.tar.gz(download file)

  2. Go to the directory where the Node.js binary was downloaded to, and then run command i.e, sudo tar -C /usr/local --strip-components 1 -xzf node-v0.10.36-linux-x64.tar.gz to install the Node.js binary package in “/usr/local/”.

  3. You can check:-

    $ node -v
     v0.10.36 
    $ npm -v
     1.4.28
    
Fayola answered 27/8, 2015 at 9:53 Comment(0)
L
17

In ubuntu specific version of node can be installed with help of nvm

install nvm

sudo apt install curl 
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash 
source ~/.bashrc

To install a particular version of node, use the command nvm install and add the number of the version.

nvm install 10.15.2
node -v 
Lutero answered 10/2, 2022 at 7:33 Comment(1)
what is 'source'?Corelli
O
10

I imagine many directed here are looking for this to add to a Dockerfile

RUN set -x \
    && curl -sL 'https://deb.nodesource.com/setup_16.x' | bash - \
    && apt-get -y install nodejs \
    && ln -s /usr/bin/nodejs /usr/local/bin/node
Oversleep answered 17/1, 2022 at 11:57 Comment(2)
How can specify exact version with it?Passivism
Seems nodesource only use major versions: github.com/nodejs/ReleaseOversleep
P
8

Say you want to install Node 10,

Firstly, download and execute the Node.js 10.x installer:

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -

This will add a source file for the official Node.js 10.x repo, grabs the signing key

Once the installer is done doing it’s thing, you will need to install (or upgrade) Node.js:

sudo apt install nodejs
Peril answered 22/12, 2020 at 8:7 Comment(1)
This was a good one, but the script got deprecated, see: github.com/nodesource/distributions/tree/…, for the latest version of the script.Joerg
D
6

version 0.10 is also avaible with this ppa

apt-add-repository ppa:chris-lea/node.js

install nodejs with:

apt-get install nodejs=0.10.25-1chl1~precise1

Thanks to my friend Julian Xhokaxhiu

Dispensation answered 1/2, 2014 at 16:36 Comment(1)
This is command giving error to me on ubuntu 14.10 E: Version '0.10.15' for 'nodejs' was not foundMelosa
S
5

yes, its a duplicate answer but I insist using n module to install a specific version(following commands installs node version 6.9.5).

npm install -g  n
n 6.9.5
Soloist answered 3/10, 2017 at 23:41 Comment(0)
D
4

NOTE: you can use NVM software to do this in a more nodejs fashionway. However i got issues in one machine that didn't let me use NVM. So i have to look for an alternative ;-)

You can manually download and install.

go to nodejs > download > other releases http://nodejs.org/dist/

choose the version you are looking for http://nodejs.org/dist/v0.8.18/

choose distro files corresponding your environmment and download (take care of 32bits/64bits version). Example: http://nodejs.org/dist/v0.8.18/node-v0.8.18-linux-x64.tar.gz

Extract files and follow instructions on README.md :

To build:

Prerequisites (Unix only):

* Python 2.6 or 2.7
* GNU Make 3.81 or newer
* libexecinfo (FreeBSD and OpenBSD only)

Unix/Macintosh:

./configure
make
make install

If your python binary is in a non-standard location or has a non-standard name, run the following instead:

export PYTHON=/path/to/python
$PYTHON ./configure
make
make install

Windows:

vcbuild.bat

To run the tests:

Unix/Macintosh:

make test

Windows:

vcbuild.bat test

To build the documentation:

make doc

To read the documentation:

man doc/node.1

Maybe you want to (must to) move the folder to a more apropiate place like /usr/lib/nodejs/node-v0.8.18/ then create a Symbolic Lynk on /usr/bin to get acces to your install from anywhere.

sudo mv /extracted/folder/node-v0.8.18 /usr/lib/nodejs/node-v0.8.18
sudo ln -s /usr/lib/nodejs/node-v0.8.18/bin/node /usr/bin/node

And if you want different release in the same machine you can use debian alternatives. Proceed in the same way posted before to download a second release. For example the latest release.

http://nodejs.org/dist/latest/ -> http://nodejs.org/dist/latest/node-v0.10.28-linux-x64.tar.gz

Move to your favorite destination, the same of the rest of release you want to install.

sudo mv /extracted/folder/node-v0.10.28 /usr/lib/nodejs/node-v0.10.28

Follow instructions of the README.md file. Then update the alternatives, for each release you have dowload install the alternative with.

sudo update-alternatives    --install genname symlink  altern  priority  [--slave  genname  symlink altern]
          Add a group of alternatives  to  the  system.   genname  is  the
          generic  name  for  the  master link, symlink is the name of its
          symlink  in  the  alternatives  directory,  and  altern  is  the
          alternative being introduced for the master link.  The arguments
          after  --slave  are  the  generic  name,  symlink  name  in  the
          alternatives  directory  and alternative for a slave link.  Zero
          or more --slave options, each followed by three  arguments,  may
          be specified.

          If   the   master   symlink  specified  exists  already  in  the
          alternatives system’s records, the information supplied will  be
          added  as a new set of alternatives for the group.  Otherwise, a
          new group, set to  automatic  mode,  will  be  added  with  this
          information.   If  the group is in automatic mode, and the newly
          added alternatives’ priority is higher than any other  installed
          alternatives  for  this  group,  the symlinks will be updated to
          point to the newly added alternatives.

for example:

sudo update-alternatives --install /usr/bin/node node /usr/lib/nodejs/node-v0.10.28 0 --slave /usr/share/man/man1/node.1.gz node.1.gz /usr/lib/nodejs/node-v0.10.28/share/man/man1/node.1

Then you can use update-alternatives --config node to choose between any number of releases instaled in your machine.

Darill answered 12/5, 2014 at 10:54 Comment(0)
C
4

FYI, according to this page in the wiki of the nodejs github repo, Chris Lea's PPA (mentioned in several other answers) has been superseded by the NodeSource distributions as the main way of installing nodejs from source in Ubuntu:

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

This is supported for the three latest (at the time of writing this) LTS versions of Ubuntu: 10.04 (lucid), 12.04 LTS (precise) and 14.04 (trusty).

I'm not sure this will help in installing an old version of nodejs, but I'm putting this here in case it helps others who needed to install a specific (newer) version of nodejs that isn't included in their distro's repositories.

Candlefish answered 19/9, 2014 at 15:8 Comment(1)
OP asks for a speciifc node version.Frutescent
T
3

To install a specific version of nodejs in Ubuntu you can use below commands, just specify and replace the version number, for example, node_12.x will fetch the latest of 12.

curl https://deb.nodesource.com/gpgkey/nodesource.gpg.key | sudo apt-key add -
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
Threw answered 13/5, 2020 at 11:6 Comment(1)
Specifying the minor version like node_12.16.3 doesn't work. I just tried with node_12.18.4 which is a LTS version as of today.Horowitz
A
2

FYI the available version for raring in Chris Lea's repo is currently 0.8.25

sudo apt-get install nodejs=0.8.25-2chl1~raring1

Aland answered 11/9, 2013 at 13:30 Comment(1)
The version keeps changing evidently. How do I see which version is the right one?Bilow
B
1

Here is a list of available builds for debian: https://github.com/nodesource/distributions/tree/master/deb

For this example, lets assume you want version 14 (LTS at the time of writing)

We can download this script from github, execute it and install the version of node we want. For security reasons it's a good idea to read the script prior to executing it.

curl -sL https://raw.githubusercontent.com/nodesource/distributions/master/deb/setup_14.x | bash
apt-get install -y nodejs # may or may not require sudo based on your setup 

I like this approach because it doesn't require extraneous dependencies like nvm to target specific versions

If you are building for a different distro or architecture you can find more builds here https://nodejs.org/dist/

Bywaters answered 23/11, 2020 at 22:5 Comment(0)
H
0

The Node.js project recently pushed out a new stable version with the 0.10.0 release Use the following command on Ubuntu 13x sudo apt-get install nodejs=0.10.18-1chl1~raring1

Ham answered 14/9, 2013 at 19:18 Comment(0)
S
0

Install nvm using the following commands in the same order.nvm stands for node version manager.

sudo apt-get update
sudo apt-get install build-essential checkinstall libssl-dev
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash

In case the above command does not work add -k after -o- .It should be as below:

curl -o- -k  https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash

Then nvm ls-remote to see the available versions. In case you get N/A in return,run the following.

export NVM_NODEJS_ORG_MIRROR=http://nodejs.org/dist

alternatively you can run the following commands too

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This         loads nvm bash_completion

Then nvm install #.#.# replacing # by version(say nvm 8.9.4) finally nvm use #.#.#

Soloist answered 4/5, 2018 at 10:26 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.