Node.js & Yeoman install for dummys

If you are heading for a Node.js install into Debian /Ubuntu, you will potentially face two issues concerning a namespace collision and generators which want to install globally!

Looking at /usr/share/doc/nodejs/README.Debian, which tells you:

The upstream name for the Node.js interpreter command is “node”. In Debian the interpreter command has been changed to “nodejs”.

This was done to prevent a namespace collision: other commands use the same name in their upstreams, such as ax25-node from the “node” package.

Scripts calling Node.js as a shell command must be changed to instead use the “nodejs” command.

To fix this create a symnlink $ sudo ln -s /usr/bin/nodejs /usr/bin/node or install the additionally nodejs-legacy package, which does that for you:

$ sudo apt-get install nodejs nodejs-legacy npm

The other conflict might that the node package manager (npm) wants to install further packages globally with sudo, which you might not like? When you look at that excellent stackoverflow post

you can enable npm to install packages globally without breaking out of $HOME by setting a local node prefix:

$ echo prefix = ~/.node >> ~/.npmrc

Than adjust your $PATH, to point to the new installation destination for global node executables:

$ export PATH=$HOME/.node/bin:$PATH

to your ~/.zshrc. After that, you can install Yeoman by running

$ npm install -g yo

without sudo or permission conflicts and the opportunity to start from scratch, when something is completely broken. Therefore just remove your ~/.node directory.

Find other interesting ways to install node and npm without having to sudo in this gist or look at that detailed discription.

NO COMMENT BOX
Right, not here. But it doesn’t mean I’m not interested in your feedback. I just prefer to use more busy services ;-) where a wider discussion could incur. So tweet me @netzfisch or if you find an error, fork my blog, correct the post and send me a pull request via GitHub. Thanks for your efforts.
CHEAT SHEETS
git linux rails vim
ELSEWHERE