This is a writeup of how I built the latest stable version of node (v8.11.4 at the time of this writing) from sources and how I setup node and npm to be used from the custom build location (and not be installed system-wide, e.g. as in /usr/bin).
See in this note on how to get node with pre-built binaries.
preliminaries
sudo apt-get install make g++ libssl-dev git
actual build
Fetch and explode the sources:
wget https://nodejs.org/dist/v8.11.4/node-v8.11.4.tar.gz tar xv node-v8.11.4.tar.gz cd node-v8.11.4
I then cd into node-v8.11.4/ and created an HTML out of BUILDING.md
(using pandoc -s --toc BUILDING.md -o /tmp/building.html
)
On the supported platforms section I saw that for GNU/Linux x64, (Tier 1 support) the requirements are: kernel >= 2.6.32, glibc >= 2.12. Using uname -r and /lib/i386-linux-gnu/libc.so.6 I saw that I had (on my Ubuntu 16.04 machine) the 4.6.0 Linux kernel and the 2.23 glibc (GNU C Library) so everything was clear to proceed.
Following the above, the following (I used -j4 as I have 4 processors on my machine):
./configure make -j4… worked like a charm (both configure and make -j4 exited with 0)
The produced binary is available at out/Release/node
$ ./out/Release/node --version v8.11.4
running tests
The instructions on BUILDING.md mention a way of running tests:
make test-only… this was also executed successfully.
setting up the environment (the wrong way)
Following the above I placed the out/Release directory ahead of my PATH in my .bashrc file and sure enough:
$ node --version v8.11.4
using npm from sources
Given that the node-v8.11.4/out/Release directory is now in the $PATH I simply created a symlink from that directory to the file npm-cli.js:
ln -s ../../deps/npm/bin/npm-cli.js npmSee also my question in the nodejs github issue tracker.
setting up the environment (the right way)
Some time after the above I received a reply in the github issue tracker to the effect that I simply have to to run the makefile's install target specifying PREFIX. This automatically takes care of creating the expected npm symlinks (alongside the node executable).
Given this information, I executed the following:
make install PREFIX=/home/mperdikeas/node/8.11.4/… which worked like a charm and then I updated the PATH in my .bashrc accordingly.