I had some issues with libraries installed via npm (such as d3 and jsdom) causing segmentation faults in Mocha tests. Ultimately I realized that it wasn’t a problem with these node modules so much as it was with my node install itself. I had installed from source following this guide, but it wasn’t quit enough to get my node install right on Debian Squeeze.

Install Node.js

Dependencies

Pretty standard stuff – make sure you’re up to date on these.

$ sudo apt-get update && apt-get install git-core curl build-essential openssl libssl-dev

Clone the Git Repo

Change into the directory you want to install node from. A good option, if in doubt, is to just go for /opt.

$ git clone https://github.com/joyent/node.git
cd node

Check the Node.js Download Page and see what they say the latest version of Node is that we should be using. At the time of writing, this was v0.10.28. Find this using git tag:

$ git tag

There may be a newer version in the Git repo than the one recommended on the Download page, however it may not be stable. Check it out:

$ git checkout v0.10.28

You should see (Stable) after the version number once you perform this checkout.

Make and Install

Configure node. The section option --without-snapshot should give you a faster build and alleviate some seg fault issues mentioned elsewhere around the web.

$ ./configure --openssl-libpath=/usr/lib/ssl --without-snapshot

Now make and install (it could take some time to complete the make testing and process, as we’re compiling the source code).

$ make
$ make test
$ make install

If it worked, you’ll be able to run both of these commands:

$ node -v
$ npm -v

If you messed up…

…like me, and installed a totally wrong and unstable version, luckily there’s still hope. Change into the directory where you put the node source:

$ make uninstall

Now you can switch branches, re-configure, and re-build the node source as needed. Just be sure to check with node -v again after you’ve done the install to be sure everything worked. Good luck!


Questions, Comments, Corrections?

Get in touch via Twitter at @monicalent.