Create a gist now

Instantly share code, notes, and snippets.

Use one of these techniques to install node and npm without having to sudo. Discussed in more detail at http://joyeur.com/2010/12/10/installing-node-and-npm/ Note: npm >=0.3 is *safer* when using sudo.
echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc
. ~/.bashrc
mkdir ~/local
mkdir ~/node-latest-install
cd ~/node-latest-install
curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1
./configure --prefix=~/local
make install # ok, fine, this step probably takes more than 30 seconds...
curl https://www.npmjs.org/install.sh | sh
# this way is best if you want to stay up to date
# or submit patches to node or npm
mkdir ~/local
echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc
. ~/.bashrc
# could also fork, and then clone your own fork instead of the official one
git clone git://github.com/joyent/node.git
cd node
./configure --prefix=~/local
make install
cd ..
git clone git://github.com/isaacs/npm.git
cd npm
make install # or `make link` for bleeding edge
# take ownership of the folders that npm/node use
# please don't do this if you don't know what it does!
sudo mkdir -p /usr/local/{share/man,bin,lib/node,include/node}
sudo chown -R $USER /usr/local/{share/man,bin,lib/node,include/node}
# now just a pretty vanilla node install
# let it use the default paths, but don't use sudo, since there's no need
mkdir node-install
curl http://nodejs.org/dist/node-v0.4.3.tar.gz | tar -xzf - -C node-install
cd node-install/*
./configure
make install
# now the npm easy-install
curl https://www.npmjs.org/install.sh | sh
# use nave, but without a subshell
# note that we're doing "usemain" instead of "use"
mkdir ~/.nave
cd ~/.nave
wget http://github.com/isaacs/nave/raw/master/nave.sh
sudo ln -s $PWD/nave.sh /usr/local/bin/nave
# take ownership
# please don't do this if you don't know what it does!
sudo mkdir -p /usr/local/{share/man,bin,lib/node,include/node}
sudo chown -R $USER /usr/local/{share/man,bin,lib/node,include/node}
# install the latest stable nodejs in the "main" root.
nave usemain stable
curl https://www.npmjs.org/install.sh | sh
# this way is really handy if you want to test things
# in different versions of node and use stable release
# versions of things.
# make a folder where you want to keep this stuff.
mkdir ~/.nave
cd ~/.nave
wget http://github.com/isaacs/nave/raw/master/nave.sh
sudo ln -s $PWD/nave.sh /usr/local/bin/nave
# now you can forget about that folder.
# you never have to go back in there.
# to use a version of node in a virtual environment
nave use 0.4.8
# to install npm in that virtualenv
curl https://www.npmjs.org/install.sh | sh
# do stuff...
npm install whatever etc
# return to non-nave-land
exit
# use a different version of node..
nave use 0.4.6
# etc...
# using Homebrew
# Note: `brew install npm` has problems, as of 2010-12-30.
# hopefully it will eventually be good and happy.
# As of npm@0.2.13, however, this is an option
PREFIX=$(brew --prefix)
# take ownership
# this will also let homebrew work without using sudo
# please don't do this if you don't know what it does!
sudo mkdir -p $PREFIX/{share/man,bin,lib/node,include/node}
sudo chown -R $USER $PREFIX/{share/man,bin,lib/node,include/node}
brew install node
# now install npm
# prefix will default to $(brew --prefix)
curl https://www.npmjs.org/install.sh | sh
echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrc
echo 'export npm_config_userconfig=$HOME/.config/npmrc' >> ~/.bashrc
. ~/.bashrc
mkdir ~/.local
mkdir ~/node-latest-install
cd ~/node-latest-install
curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1
./configure --prefix=~/.local
make install
curl https://www.npmjs.org/install.sh | sh
# install node wherever.
# use sudo even, it doesn't matter
# we're telling npm to install in a different place.
echo prefix = ~/local >> ~/.npmrc
curl https://www.npmjs.org/install.sh | sh
@DTrejo
DTrejo commented Oct 3, 2010

Used the top one, and it worked great. Thanks :)

@optikfluffel

For me the 2nd one worked ^^ thx

@joar
joar commented Nov 12, 2010

First one worked perfectly, although on a Debian x64 512M RAM it did not perform in 30 seconds.

'install' finished successfully (3m23.933s)

HAH! NEVERMIND! Didn't work, > node works, > npm does not. I had created the ~/npm before i ran the script. I'll retry.

Edit: I retried after I cleaned up some node-related directories, binaries and installs. I uninstalled nodejs, the Aptitude(package manager) version of node from my machine and removed all node-related directories in ~.

The self-compiled node version created with the first script works perfectly :)

@JeanNiBee

First option worked well for me once I realize that the path of node is important. I.E. I had node previously installed to usr/local not my ~/local. I pushed my ~/local to have higher precedence in the path and the npm installation worked without a hitch.

Addendum: As I had 'system' node and a local node installed, when I borked up my paths and the system node was running, all my paths were screwed when doing requires in my code, forcing the local 'node' to be my executable fixed all my path issues.

Ex: 'which node' returns a path to my ~/jbateman/local installation instead of /usr/local/bin

@thynctank

seems like someone is keeping ports up to date as well...

@RobertStewart

For the take-ownership script, you first need to create /usr/local/lib/node and /usr/local/include/node.

sudo mkdir -p /usr/local/{lib/node,include/node}
@isaacs
Owner
isaacs commented Dec 27, 2010

Thanks, Robert, good catch. Fixed.

@ramwisc
ramwisc commented Jan 4, 2011

The 2nd script (only-git-all-the-way.sh) has a wrong URL for cloning node. It should read:

git clone https://github.com/ry/node.git

instead of

git clone git://github.com/ry/node.git

@ramwisc
ramwisc commented Jan 4, 2011

ok..cool.

@chadams
chadams commented Jan 7, 2011

If your on a MAC remember your ".bashrc" isn't used, it should be ".bash_profile"

@maxidr
maxidr commented Jan 29, 2011

Thanks for share!! good work!

@rbotman
rbotman commented Mar 11, 2011

For the only-git-all-the-way script, the location of node.git should be updated:
git://github.com/joyent/node.git

@isaacs
Owner
isaacs commented Mar 11, 2011

@rbotman: Thanks.

@TrevorBurnham

There's a reference to node-v0.2.5.tar.gz that should be replaced with node-latest.tar.gz.

@d2s
d2s commented Mar 26, 2011

There is one quite nasty error in only-git-all-the-way.sh example:

There should be
cd ~/local
before first git clone command so that things would end up to ~/local/node/ instead of ~/node/

@DTrejo
DTrejo commented Mar 26, 2011

Re: https://gist.github.com/579814#file_take_ownership.sh

Just a note: make install does not work without sudo.

@edlongman

Help !!
whenever the command
curl http://npmjs.org/install.sh | sh
is run on my computer I just end up with a gzip process that runs forever
and advice because i'm really struggling

Also if I try the git all the way i get this
node cli.js install -g
npm ERR! Could not read data for npm@1.0.0rc8
npm ERR! error installing npm@1.0.0rc8 Error: ECONNREFUSED, Could not contact DN
S servers
npm ERR! error installing npm@1.0.0rc8 at IOWatcher.callback (dns.js:53:15)
npm ERR! Error: ECONNREFUSED, Could not contact DNS servers
npm ERR! at IOWatcher.callback (dns.js:53:15)
npm ERR! Report this entire log at:
npm ERR! http://github.com/isaacs/npm/issues
npm ERR! or email it to:
npm ERR! npm-@googlegroups.com
npm ERR!
npm ERR! System CYGWIN_NT-5.1 1.7.8(0.236/5/3)
npm ERR! command "node" "/home/NJH/node-latest-install/npm/cli.js" "install" "-g
"
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/NJH/node-latest-install/npm/npm-debug.log
npm not ok

@isaacs
Owner
isaacs commented Mar 28, 2011
@devlim
devlim commented Apr 14, 2011

May i know how to upgrade node.js? just run the same command again?

@DTrejo
DTrejo commented Apr 14, 2011

Hey devlim, try running one of these again, it should work (if you can remember, try to use the same one as last time, but either way it should work fine).

@devlim
devlim commented Apr 14, 2011

Thank DTrejo.

@brandondrew

What is the rationale for installing to ~/local in so many of these?

@joar
joar commented Apr 25, 2011

I think it is to separate node and the node related tools from the rest of the system. This is preferrable since NodeJS is in rapid development and is rarely or never available from the package manager in it's latest version.

Since it is separated from the global program installation folders, it's not as easily lost and forgotten, not so much for disk space, perhaps, but more for the principle.

@isaacs
Owner
isaacs commented Apr 26, 2011
@vkelman
vkelman commented May 3, 2011

I'm getting the same error as edlongman trying to run curl http://npmjs.org/install.sh | sh (Cygwin)

@zachaysan

Hey guys make sure that the last line of code in your bashrc file is not a comment as the appending will lead you to a commented out PATH=$HOME/local/bin:$PATH which means the install will fail.

@zachaysan

I updated the code at a fork of the gist here: https://gist.github.com/957346

If there is a way of doing a pull request for a gist I can't seem to find it.

@jtmkrueger

When I did the install as superuser (take-ownership) route I got an error:
Could not install the file '/usr/local/lib/pkgconfig/nodejs.pc'

anyone have any ideas?

@iansheridan

In referance to the second method "only_git_all_the_way.sh". I ran into a problem with installing npm. The way that I resolved the issue was to once my .bashrc file was updated (line 5), I added source ~/.bashrc to the script. This put node in the path and installing npm worked just fine.

@mccoy
mccoy commented May 7, 2011

@jtmkrueger: the pkgconfig command is used by various build utilities to determine what you have installed on a system without needing to dig through output from various platform-specific package managers (e.g. build sequence needs to know where you have installed lua, so it looks for /usr/lib/pkgconfig/lua.pc, /usr/local/lib/pkgconfig/lua.pc, etc until it finds one and in that file there is a listing of where the various lib and bin dirs are for that package.) If this is the first major package you have installed in /usr/local then it is possible that the pkgconfig directory does not exist. Try running (as root/sudo) "mkdir /usr/local/lib/pkgconfig" and then install again.

@jabowery

Please fix only-git-all-the-way.sh as per the above comment.

@kevinSuttle

First one worked! Woot! This should be the default. I had problems with it the first two times I tried.

@rumkin
rumkin commented Jul 4, 2011

Hi i've got such problem with npm on ubuntu 11.04:
packages and npm automatically installed in folder /proc/7278/cwd/...
And then node.js can't load any installed module. I used this bash script:

mkdir ~/local
echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc
. ~/.bashrc

# could also fork, and then clone your own fork instead of the official one

git clone git://github.com/joyent/node.git
cd node
./configure --prefix=~/local --without-ssl
make install
cd ..

git clone git://github.com/isaacs/npm.git
cd npm
make install

Maybe anyone could help me: what if i want to install node.js to /media/lazersluts/nodejs, what should i do.
And wich files i should to remove excepts ~/local and ~/.bashrc to completely remove node.js. If i want to make fresh installation.
Thanks. And sorry for noobies and "excellent English" )

Update

Solved with

echo prefix = ~/local >> ~/.npmrc
curl http://npmjs.org/install.sh | sh
@rumkin
rumkin commented Jul 4, 2011

Why does

require('npm-name');

work only on partition where node.js installed? And doesn't on other partitions?

@pcambra
pcambra commented Aug 6, 2011

I had to do sudo make install in the first solution.

Also I had problems with npm: http://stackoverflow.com/questions/6383413/npm-install-issues-ubuntu-11-04

@rstacruz

In Ubuntu, you may need to do sudo apt-get install libssl-dev before you can compile Node.

@Ginny
Ginny commented Aug 30, 2011

'install' finished successfully (12m33.358s)

@triptych
triptych commented Sep 5, 2011

None of these worked for me as node gave me an out of memory error trying to run the node cli.js command. I was eventually able to get it working by loading the .pkg file here https://sites.google.com/site/nodejsmacosx/

@isaacs
Owner
isaacs commented Sep 5, 2011
@ianswilliams

Thankyou, my node/npm install got corrupted "somehow" , the first method about worked for me

@AlexZeitler

I tried the first one using cygwin and I'm stuck with this:

curl http://npmjs.org/install.sh | sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 7156 100 7156 0 0 14785 0 --:--:-- --:--:-- --:--:-- 25466
tar=/usr/bin/tar
version:
tar (GNU tar) 1.25
Packaged by Cygwin (1.25-1)
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by John Gilmore and Jay Fenlason.
Installing without make. This may fail.
Failed to get tarball url for npm/latest

If I try the second, and run make install it seems to run forever at buid-doc.sh.

@clintandrewhall

I had to add:

chmod 755 nave.sh

before line 10 in order for https://gist.github.com/579814#file_use_nave.sh to work properly. Did I miss something?

@snapshot

I am trying to install this using homebrew and I seeing the following permissions error.

Could not create /usr/local/lib/node_modules/___npm.npm
npm ERR! error installing npm@1.0.106 Error: EACCES, permission denied '/usr/local/lib/node_modules'
npm ERR! Error: EACCES, permission denied '/usr/local/lib/node_modules'

It looks like the install for npm is failing:
curl http://npmjs.org/install.sh | sh

To get this working I added

chown -R YOUR_USER_NAME:admin local/include/
chown -R YOUR_USER_NAME:admin local/lib/

I probably could also have run it the install command with sudo like this:

sudo curl http://npmjs.org/install.sh | sh

but the point of this gist is to install node and npm without having to sudo. However, at the end of the title at the top of this gist it says that npm >=0.3 is safer when using sudo. I am not sure if that means that you should install using sudo or chown the directory to $USER

@designerfuzzi

which node.js version is the latest who support i386 MacOSX 10.5.8 ?
i tryed all versions, looks like its not documented about... just node-v0.4.9 was working at last.. all other had :bad error: bad cpu errors and so on, any install failed later or earlyer.. if someone calls a file mac-install package or means it is for a mac, then it has in my opinion to be for macs and not just for lion. because then it is just a lion install ^^
otherwise i'm the terminalator with my pocketcalculator! :-P
can anyone help out, with a precompiled package for osx10.5.8, or can send me 1000 dollar :D

@the0ther

top one worked great for me on Ubuntu Server 11.04. thanks!

@boxxxie
boxxxie commented Mar 10, 2012

how do i update node.js?

i tried the first 2 methods and got the same error

src/unix/ev/ev.c: In function ‘ev_io_start’:
src/unix/ev/ev.c:2673: error: ‘EV_LIBUV_KQUEUE_HACK’ undeclared (first use in this function)
src/unix/ev/ev.c:2673: error: (Each undeclared identifier is reported only once
src/unix/ev/ev.c:2673: error: for each function it appears in.)
make[1]: *** [src/unix/ev/ev.o] Error 1
make[1]: Leaving directory /home/paul/node-latest-install/out/Release/deps/uv' Waf: Leaving directory/home/paul/node-latest-install/out'
Build failed: -> task failed (err #2):
{task: uv uv.h -> uv.a}
make: *** [install] Error 1

@protoiyer

In https://gist.github.com/579814#file_only_git_all_the_way.sh, there is no need to git clone the npm repo, as it is now made available when you install node itself. So can remove line numbers 15-18.

Also, this is how the node installation ended for me:

shebang #!~/local/bin/node /local/lib/node_modules/npm/bin/npm-cli.js
fs.js:280
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^
Error: ENOENT, no such file or directory '
/local/lib/node_modules/npm/bin/npm-cli.js'
at Object.openSync (fs.js:280:18)
at Object.readFileSync (fs.js:155:15)
at shebang (/home/proto/repos/node/tools/installer.js:53:20)
at run (/home/proto/repos/node/tools/installer.js:77:10)
at /home/proto/repos/node/tools/installer.js:85:7
at ChildProcess.exithandler (child_process.js:533:7)
at ChildProcess.emit (events.js:90:17)
at maybeClose (child_process.js:615:16)
at Process.onexit (child_process.js:655:5)
make: *** [install] Error 1

Though everything seems to be working ("node -v", "npm -v" returns proper values, and "npm install -g coffee-script" works), not sure why the above error happened, and what the implications are. Jotting it down here since someone else too might face the issue.

@danielwashbrook

Just a note, you can't use the ~ for the reference to home and currently npm doesn't work with 0.9.0-pre so the git method fails

@TimHeckel

Running Ubuntu 12.04, I kept running into this error when running make install

/home/tim/node-latest-install/out/Release/obj.target/v8_base/deps/v8/src/accessors.o ../deps/v8/src/accessors.cc
make[1]: g++: Command not found

My vm was brand spanking new, so I had to install this before make install would work

sudo apt-get install build-essential libssl-dev curl git-core
@andremendesc

Just used the first one at Amazon EC2, awesome, thanks.

@aryehischechter

I don't know why installing npmjs didn't work using the first method but this is what I'm getting.
help would be appreciated.
npm ERR! Error: EACCES, unlink '/home/enduser/local/bin/npm'
npm ERR! { [Error: EACCES, unlink '/home/enduser/local/bin/npm'] errno: 3, code: 'EACCES', path: '/home/enduser/local/bin/npm' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Linux 3.5.0-27-generic
npm ERR! command "/home/enduser/local/bin/node" "/tmp/npm.14923/package/cli.js" "rm" "npm" "-gf"
npm ERR! cwd /tmp/npm.14923/package
npm ERR! node -v v0.10.5
npm ERR! npm -v 1.2.18
npm ERR! path /home/enduser/local/bin/npm
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, unlink '/home/enduser/local/bin/npm'
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /tmp/npm.14923/package/npm-debug.log
npm ERR! not ok code 0

npm@1.2.18 prepublish .
node bin/npm-cli.js prune ; rm -rf test///node_modules ; make -j4 doc

make: Nothing to be done for `doc'.
npm ERR! error rolling back Error: EACCES, unlink '/home/enduser/local/bin/npm'
npm ERR! error rolling back npm@1.2.18 { [Error: EACCES, unlink '/home/enduser/local/bin/npm'] errno: 3, code: 'EACCES', path: '/home/enduser/local/bin/npm' }
npm ERR! Error: EACCES, unlink '/home/enduser/local/bin/npm'
npm ERR! { [Error: EACCES, unlink '/home/enduser/local/bin/npm'] errno: 3, code: 'EACCES', path: '/home/enduser/local/bin/npm' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Linux 3.5.0-27-generic
npm ERR! command "/home/enduser/local/bin/node" "/tmp/npm.14923/package/cli.js" "install" "-gf"
npm ERR! cwd /tmp/npm.14923/package
npm ERR! node -v v0.10.5
npm ERR! npm -v 1.2.18
npm ERR! path /home/enduser/local/bin/npm
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, unlink '/home/enduser/local/bin/npm'
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /tmp/npm.14923/package/npm-debug.log
npm ERR! not ok code 0
It failed

@lucasbiguet

apparently you still need admin rights to install npm. I just had the same issue, so I manually downloaded the install script and "sudoed" it:

cd ~
wget https://npmjs.org/install.sh
chmod +x install.sh
sudo ./install.sh

No error messages so apparently it worked :)

@JLMorales

This helped me out... and in my case, (CentOS 6.3) EPEL repo has this jewel of a software, so it is a reliable package maintainer... This was really easy.

https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

@manojwins

I am getting this error in both method 1 and 2. Can someone please help?

root@web [/node]# ./configure --prefix=~/local
File "./configure", line 427
arm_float_abi = 'hard' if is_arm_hard_float_abi() else 'default'
^
SyntaxError: invalid syntax

@francisbyrne

I got an error at the same step as above except a different line:

bash-3.2$ ./configure --prefix=~/local
File "./configure", line 441
fpu = 'vfpv3' if armv7 else 'vfpv2'
^
SyntaxError: invalid syntax

@ghost
ghost commented Jun 27, 2013

Worked here. Ubuntu 13.04 64 bits. Thanks :)

@symsun
symsun commented Jun 28, 2013

First one is not working for me also. Someone pls help.

[root@sddev node-latest-install]# ./configure --prefix=~/local
File "./configure", line 441
fpu = 'vfpv3' if armv7 else 'vfpv2'
^
SyntaxError: invalid syntax

@zweiland
zweiland commented Jul 2, 2013

top worked beautifully! thanks man!

@Jerbot
Jerbot commented Jul 5, 2013

Step 9, method 1:

"npm cannot be installed without nodejs.
Install node first, and then try again.

"Maybe node is installed, but not in the PATH?
Note that running as sudo can change envs."

@zarac
zarac commented Aug 6, 2013

The configure script for only-git-all-the-way.sh is in python2 - this will cause parse errors if python3 is the default on your system. One solution is to add a symbolic link to python2 inside your ~/local/bin.

cd ~/local/bin
ln -s /usr/bin/python2 ./python

@ltcastro

I thought "PROFESSIONALS" developed node.js?????

It is a garbage install process for the mac. The install directory is hidden/protected: /usr/local/bin...

WTF?

@ltcastro

It is hard to have ANY confidence in developers that can NOT even get an installer right.

@ltcastro

Can you imagine if surgeons and real professionals did their work so poorly? I am obviously very pissed that I just wasted two hours on what should be simple.

@ojosdegris

@itcastro maybe you should do something else if you failed to open http://nodejs.org/ and download installer in the first place.

@leto
leto commented Aug 29, 2013

./configure --prefix=/local does not work on my system, it creates a directory called "". The more defensive way is to do:

./configure --prefix=$HOME/local

@modi2020
modi2020 commented Sep 6, 2013

I love this.....works like charm
keep up the good work

Thank you so much!

@kereg
kereg commented Oct 2, 2013

Thanks!!
Your awesome script node-and-npm-in-30-seconds.sh worked like a charm on my fedora 17.

No 30 seconds here....

@jochenvanwylick

Hi all - I'm pretty new to this but I read (and confirmed that it works for me) that using make -j (so with the -j flag) uses all processor cores and in my case (8 cores) makes it go A LOT faster.

@firstdoit

On "take-ownership", the directory structure for the node dist is wrong.

curl http://nodejs.org/dist/node-v0.4.3.tar.gz | tar -xzf - -C node-install

should be

curl http://nodejs.org/dist/v0.10.20/node-v0.10.20.tar.gz | tar -xzf - -C node-install

@shashankgroovy

node-and-npm-in-30-seconds.sh ftw \m/
worked flawlessly . Love it

thank you so much!

@SgtPooki

@leto, ./configure --prefix=$home/local fixed the issues I was having with #2. Thanks!

@valtonio

The first one doesn't work on OSX 10.9.
Getting
curl: (60) SSL certificate problem: Invalid certificate chain
on the last step.

@billstron

Actually, the problems with #2 are fixed with ./configure --prefix=$HOME/local. The home variable is capitalized.

@michael-yin

Thank you very much..I have installed node in ubuntu.
Just one suggestion, the latest version of node has included npm, so the last line of code can be removed...^_^

@johanbaaij

I'm also getting this with the 30 second method.

"npm cannot be installed without nodejs.
Install node first, and then try again.

Maybe node is installed, but not in the PATH?
Note that running as sudo can change envs."

I'm pretty sure node installed although i do not seem to be able to run it. do i just delete /node-latest-install if i would want to try another method?

@ghost
ghost commented Nov 17, 2013

@johan010 npm comes packaged with nodejs now so you can ignore the part about installing npm

@hereandnow

i used nvm which gives you the added bonus of easy node.js-version switching:

# see more about nvm: https://github.com/creationix/nvm
# added bonus: gives you the opportunity to switch node versions
 
# install nvm
curl https://raw.github.com/creationix/nvm/master/install.sh | sh
 
# reload bash_profile
source ~/.bash_profile
 
# install a node.js version, edit the version you want to use
nvm install v0.10.22
@dougturnkey

Wow - wish i'd found this page like a year ago. :) stackoverflow answer is crap.

@meeb0
meeb0 commented Dec 5, 2013

Wonderful...

@janraasch

This is beautiful.

@firstdoit

In addition to the first script, I run this on new systems for easy sudo'ing, when (rarely) needed:

#!/bin/bash
ln -s $HOME/local/bin/node /usr/bin/node
ln -s $HOME/local/lib/node /usr/lib/node
ln -s $HOME/local/bin/npm /usr/bin/npm
ln -s $HOME/local/bin/node-waf /usr/bin/node-waf
@patorjk
patorjk commented Feb 12, 2014

Just as a heads up, for the "node-and-npm-in-30-seconds.sh" gist I had to add www to the npmjs URL since it was returning HTML. Ex:

$ curl --proxy [proxy here] https://npmjs.org/install.sh install.sh
< html>Moved: < a href="https://www.npmjs.org/install.sh">https://www.npmjs.org/install.sh< /a>
< html>
...

@aebm
aebm commented Feb 17, 2014

Hi Isaac,

I have updated the 30 seconds install to the new npm url. Here is the link to the gist https://gist.github.com/aebm/9047011

Regards

@randwa1k

Can someone explain what each step in "node-and-npm-in-30-seconds.sh" does? I'd like to know the reasons behind each line.

@ict4eo
ict4eo commented Feb 26, 2014

Hi Isaac

I am trying to use the npm install procedure "node-and-npm-in-30-seconds.sh" (actually part of a Dockerfile I am creating to install cartoDB).

The final output is this:

...
creating ./config.gypi
creating ./config.mk
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
03 0:00:03 --:--:-- 80
sh: 1: cannot open html: No such file
sh: 2: Syntax error: redirection unexpected

Do you have any idea what can cause this?

@ict4eo
ict4eo commented Feb 27, 2014

Hi Isaac

When I try the second script (again, inside Docker), it also fails with this message:

Cloning into 'npm'...
rm -rf
.building_ronn
html/doc
html/api
man
scripts/doc-build.sh doc/api/npm-test.md man/man3/npm-test.3
make[1]: Entering directory '/npm'
node cli.js install ronn --no-global
bash: node: command not found
make[1]: Leaving directory '/npm'
make[1]: *** [node_modules/.bin/ronn] Error 127
*** [man/man3/npm-test.3] Error 2

@ferantivero

hi Isaac/guys couldn't execute the 30-secs-way without errors. Even I tried to fix it with no luck by playing around with most of the aforementioned variants. So just went to nodejs.org and click install. It downloads the latest node dist.

Then, I followed the readme instructions and got node installed (it seems that it comes with npm now)

My question is, am I missing something installing node+npm in this way?

Thanks,

@kurotek
kurotek commented Mar 3, 2014

Just a note, right now npmjs.org is throwing 301 redirects when you try and access without prefixing the www subdomain https://npmjs.org/install.sh

e.g.

curl -v https://npmjs.org/install.sh

The solution is to either manually change for the redirect

curl -v https://www.npmjs.org/install.sh

Or just use the -L option to tell curl to follow redirects

curl -Lv https://www.npmjs.org/install.sh

After making one of those changes, the gists should work.

@isaacs
Owner
isaacs commented Mar 11, 2014

Just updated the scripts to add the www to the urls. Sorry about that, folks.

@landed1
landed1 commented Mar 12, 2014

For some reason after maybe a restart yo command not found and also the same for npm. This was bugging me as it was happening after time periods...thought it must be a restart...

and running . ~/.bashrc solved my issue ! So how do I persist this ? In this file I have

export PATH=$HOME/local/bin:$PATH
export PATH=$HOME/local/lib/:$PATH

I thought those 2 lines would export the lines in the main paths file ?

So I guess I might need these added to my main etc/paths file right (but why didnt the exports work???)

[paths file]
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
/User/calvin/local/bin

can I add it like

~/local/lib
~/local/bin

??

@sungwon
sungwon commented Mar 25, 2014

ict4eo, I was getting the same error on my ubuntu system for the 2nd script and realized that it was compiling into the wrong directory (it actually made a directory named "~" in the current directory rather than using the home directory).

I changed:
./configure --prefix=~/local
by replacing the ~ with the full path to my home directory (e.g. '/home/username/local' where username is your username).

But I would grateful if someone could explain why the tilde did not work.

@anthonybrown

The homebrew install should be brew install node --without-npm or brew will install npm by default
I didn't read the whole comments so if this is a repeat, my apologise

@mrzool
mrzool commented Apr 7, 2014

@sungwon same thing here. running that second script threw me into a world of pain. took me 1 hour to figure out what the problem was.

@shettypuneeth

First method worked, even thought it took a lot more than 30 seconds. Thanks.
Had to remove all the files and folder associated with the previous node install for it to work.

@hektech
hektech commented Apr 24, 2014

First method helped me move forward with node. Thanks! One note: npm is included with the node install, so I skipped the last step and works fine (use "npm -v" to see which version you have).

@binarykitchen

I installed nave like use-nave.sh but have issues here:

$ nave
zsh: permission denied: nave

Permission denied? Huh. It has all the correct permissions in /usr/local/bin:

lrwxrwxrwx  1 root root   37 May  7 12:56 nave -> /home/michael.heuberger/.nave/nave.sh

but I can run nave with bash nave. When I try to install a node version, it gets installed but it won't find the node command afterwards.

I'm using Ubuntu 14.04 and ZSH here. Any clues?

@allthetime

Couldn't install properly with BREW for some reason. Used the top .sh and it was flawless. Thanks for the scripts!

@twincharged

Note for anyone having trouble with installing/using node and or npm (especially after restarting the terminal) - For me the PATH for node needed to be
echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bash_profile
. ~/.bash_profile
If your bash_profile does not read bashrc, then using bash_profile instead of bashrc in setting the path will fix the problem for you.

@twlkyao
twlkyao commented Jun 7, 2014

I use the second, and it works.

@renoth
renoth commented Jun 10, 2014

the last one ... piping curl into your shell ... this is clearly a joke isnt it?

@01010000101001100

Should I go with this one or noob-node-package-installer? :D

@microbial

30-second one worked for me. Can't believe this post is over 4-years old and still timely.

@mkalygin

Regarding take-ownership.sh approach. Please, do the following:

  • replace http://nodejs.org/dist/node-v0.4.3.tar.gz with http://nodejs.org/dist/node-latest.tar.gz to install the latest version of node.js (I had a build error because of missing SSLv2_method, Elementary OS Luna);
  • add sudo sh to the npm installation: curl https://www.npmjs.org/install.sh | sudo sh (I had EACCESS error).

Thanks!

@petterg
petterg commented Jun 29, 2014

On my gentoo system I get:

export PYTHON=/usr/bin/python2.7
$PYTHON ./configure --prefix=$HOME/js/js-libraries/node
make

../../src/weak_collection.js ../../src/promise.js ../../src/object-observe.js ../../src/macros.py
Traceback (most recent call last):
File "../../tools/js2c.py", line 514, in
main()
File "../../tools/js2c.py", line 510, in main
JS2C(args[3:], args[0], args[1], args[2], options.raw, options.omit)
File "../../tools/js2c.py", line 481, in JS2C
sources = PrepareSources(source)
File "../../tools/js2c.py", line 372, in PrepareSources
assert len(macro_files) in [0, 1]
TypeError: object of type 'filter' has no len()

It seems like something does not honor the $PYTHON setting and is just calling "python" which gives python3 and the above error

@rannday
rannday commented Jul 11, 2014

I thought the first one might work, but it didn't. But I also forgot to install build-essentials. Either way, I went with the way I usually use, which is:

mkdir ~/local
cd ~/Downloads
wget http://nodejs.org/dist/v0.10.29/node-v0.10.29.tar.gz

tar -zxvf node*
cd node*
./configure --prefix=/home/rann/local
make
make install
echo 'export PATH=/home/rann/opt/bin:${PATH}' >> ~/.bashrc
. ~/.bashrc
node -v
npm -v

@rafaelrinaldi

For the record, I was having problems with the npm easy-install process. Just changed it to exec the script with sudo after its download and got it to work:

curl https://www.npmjs.org/install.sh | sudo sh

@justjoolz

First one gave me these errors:

npm ERR! Error: EACCES, mkdir '/usr/local/share/man/man1'
npm ERR! at Error (native)
npm ERR! { [Error: EACCES, mkdir '/usr/local/share/man/man1']
npm ERR! stack: 'Error: EACCES, mkdir '/usr/local/share/man/man1'\n at Error (native)',
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! path: '/usr/local/share/man/man1' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Linux 3.13.0-24-generic
npm ERR! command "/home/j00lz/.nvm/v0.11.13/bin/node" "/tmp/npm.9758/package/cli.js" "install" "-gf"
npm ERR! cwd /tmp/npm.9758/package
npm ERR! node -v v0.11.13
npm ERR! npm -v 1.4.20
npm ERR! path /usr/local/share/man/man1
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! stack Error: EACCES, mkdir '/usr/local/share/man/man1'
npm ERR! stack at Error (native)
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /tmp/npm.9758/package/npm-debug.log
npm ERR! not ok code 0

@mryellow

Git, path problem.

echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc

Following the instructions it's actually installed to $HOME/local/node.

@meawoppl

I would add a note about python version early on. It it would be accepted, I would write a PR to add portability. At the very least, make some noise about using py2 and crashing-out explicitly

@holodny
holodny commented Jul 28, 2014

Thanks Isaac! This is the gift that keeps on giving (for four years now, apparently). I just ran the top scripts on Ubuntu (Lubuntu) 14.04 Trusty and it ran perfectly and quickly, I just had to install Curl before step #6.

@SamuelMarks

Neatest method I've found:

$ mkdir ~/.nave && cd $_ && wget http://github.com/isaacs/nave/raw/master/nave.sh
$ sudo ln -s $PWD/nave.sh /usr/local/bin/nave
$ chmod +x nave
$ nave use 0.10.30  # Or whatever other version you want
$ npm update -g npm
@reinaldoferreira

Hey man, thanks!! The first one worked for me!
Really, thanks, i have been suffering with permission errors 48 hours ago and now every thinks works fine!

@ptica
ptica commented Aug 15, 2014
re: node-and-npm-in-30-seconds.sh

curl https://www.npmjs.org/install.sh | sh

resulted in

curl: (51) SSL: certificate subject name 'a.sni.fastly.net' does not match target host name 'www.npmjs.org'

seems that npm is part of node so is there still need for it? as even without it I got:

which npm
~/local/bin/npm
@GatorDigital-HQ

Tried the first method and it failed reporting syntax errors in ./configure

@ashleyblackmore

@harleyhar you are probably using wrong python to install. instead of py3k try:

python2.7 configure --prefix=~/local

for me, that fixed the issue you seemed to be having

@odonohueben

I installed node-and-npm-in-30-seconds.sh with success:

BENs-MacBook-Air:~ benodonohue$ ls
Applications Dropbox Pictures
Desktop Library Public
Documents Movies local
Downloads Music node-latest-install

I get this when i run npm -v:
BENs-MacBook-Air:~ benodonohue$ npm -v
-bash: npm: command not found

Is someone able to tell me what i may have done or doing wrong?

UPDATE:
I used twincharged solution shown above, now its working. I ran,
echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bash_profile

Thanks..

@newshorts

I made a slight revision to this here for homebrew:

# using Homebrew

# Note: `brew install npm` has problems, as of 2010-12-30.
# hopefully it will eventually be good and happy.
# As of npm@0.2.13, however, this is an option

PREFIX=$(brew --prefix)

# take ownership
# this will also let homebrew work without using sudo
# please don't do this if you don't know what it does!
sudo mkdir -p $PREFIX/{share/man,bin,lib/node,include/node}
sudo chown -R $USER $PREFIX/{share/man,bin,lib/node,lib/node_modules,include/node}

brew install node

# now install npm
# prefix will default to $(brew --prefix)
curl https://www.npmjs.org/install.sh | sh
@djavaui
djavaui commented Nov 17, 2014

WONDERFULL!!!

@Wail75
Wail75 commented Dec 8, 2014

Hello,

I tried to install Semantic UI using the git only method. I went through the installation and after "npm install" ( http://learnsemantic.com/guide/expert.html#project-dependencies ) I got an error about gulp version. Then I tried to update gulp with npm and got an error message saying that node version is not correct (sorry I lost the messages and I don't remember version numbers).
I checked my node version, it was something like "v0.10.33-pre". The version number was high enough but I guess the "pre" was confusing the version checking.
So I installed again node, but this time downloading it directly, getting version "v0.10.33", then everything worked correctly.

@SteveShaffer

I tried the second one, and it ended up creating a literal "" directory within the node directory, so that it ended up installing to a directory named "/node/~/local". Is that just super bizarre or what? I'm on the current version as of today, so I guess v0.10.33.

Changing to --prefix=/home/username/local seems to fix it. But that's weird...

@cristovaov

I received an error today installing 'node-and-npm-in-30-seconds.sh' in my Vagrant provision with the npm part which was not happening last week. Using 'curl -L https://npmjs.org/install.sh | sh' instead (as suggested on npmjs.com) resolved my problem. Cheers~

@starsinmypockets

tl;dr - any reason not to just grab the binary?

wget http://nodejs.org/dist/latest/node-v0.10.34.tar.gz

@mikejerome

I had the same problem and solution as cristovaov

@justcookin

Had the same problem as cristovaov - curl -L https://www.npmjs.org/install.sh | sh (added -L to follow redirect) worked.

@ghost
ghost commented Dec 26, 2014

@isaacs, all of the scripts should have https://www.npmjs.org/install.sh replaced by https://www.npmjs.com/install.sh because you changed the website address. Also, the description should be updated - with http://joyeur.com/2010/12/10/installing-node-and-npm being replaced by https://www.joyent.com/blog/installing-node-and-npm which has also changed. Otherwise, these are great little scripts, and really easy to customise. Thanks a lot!

@easingthemes

Thanks,
this should be default node install directory. I'm tired of sudo caused errors.

  1. uninstall old nodejs sudo apt-get remove nodejs
  2. install with node-and-npm-in-30-seconds.sh
    • change last line as @cristovaov suggested curl -L https://www.npmjs.org/install.sh | sh
  3. .npm dir stays the same so I didn't lose any of my plugins
@AndersSchmidtHansen

Thanks for the gists, I've used the 'node-and-npm-in-30-seconds.sh' plenty of times with success. I do agree with easingthemes and Aedx that @isaacs should update the code with the up-to-date curl.

For what it's worth, if you are on a completely fresh install of ElementaryOS you might need to install g++ make first. I could get any of @isaacs scripts to work when I first tried (a while back) and had to do:

sudo apt-get install -y python-software-properties python g++ make

After that, the 30 second method worked smoothly (when remembering curl -L https://www.npmjs.org/install.sh | sh)

@RobinIsTheBird

Thanks, this is great. Great success with 'node-and-npm-in-30-seconds.sh'.

FWIW, curl https://www.npmjs.org/install.sh says it's permanently moved to www.npmjs.com. Yeah, adding -L to make curl follow redirects works, but it seems more straightforward to replace .org with .com.

@ezmiller
ezmiller commented Jan 9, 2015

using these methods, how does one then update node? i tried to install n using npm and it didn't seem to work. when i issued the command n stable, and then node -v the version remained unchanged....

@danielfoxp2

Thanks. I ran into some problems using sudo to install node and find here some good options to do it without sudo nor need to change /usr/local permissions.

But, I was wondering why the command "curl https://www.npmjs.org/install.sh | sh" is needed. I chose the "xgd-freedesktop.org-style.sh" option and put line by line in terminal. But, after the "make install" command I tested if node was ok and it worked like a charm, then, by curiosity, I tested if npm was already installed together, because npm now come with node installer, and yes, npm was installed and fully functional.

So, the question is: Why run the "curl https://www.npmjs.org/install.sh | sh" command is required?

p.s.: Sorry about my english, I am a huehuebr...

@gavinengel

This should be changed: https://www.npmjs.org/install.sh
to this: https://www.npmjs.com/install.sh

$ curl https://www.npmjs.org/install.sh | sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0    51    0    51    0     0    350      0 --:--:-- --:--:-- --:--:-- 51000
sh: line 1: Moved: command not found
@troyhart

I used only-git-all-the-way.sh and it almost worked. I think the there is an error with the ./configure step. Specifically, the use of ~ for the user's home directory didn't seem to work correctly (I'm running mint 17, 64 bit)--it actually caused the creation of directory named ~ in the node directory.

I replaced this with an explicit path and it seemed to work. Specifically, I did this:

git clone git://github.com/joyent/node.git
cd node
./configure --prefix=/home/myusername/local
make install
@dpelletier

Much to my great frustration, nowhere, could I really find a complete and concise method of installing the full node stack that did not involve using sudo or some drawn out tedious, solution (and neither the official node site or stackexchange helped here)....

As well, all of the sites I visited said that npm was included with the nodejs module yet the nodejs version existing in the default Ubuntu repository did not seem to have it.
I came across the nvm module that sounded interesting as it gives you the ability to easily install and switch node.js versions (among other features).

To save others similar frustrations, I thought I would sketch out the steps I took to install the nodejs stack onto Ubuntu 12.04, "Precise" (elementary):

Also, since nvm uses the name "node" instead of "nodejs", make sure that the unrelated program also named "node" -- the Amateur Packet Radio -- does not already exist on your system.

sudo apt-get install git build-essential libssl-dev curl git-core

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.23.3/install.sh | bash

(I determined the latest nvm version available -- and a lot of other, really helpful information -- at: https://github.com/creationix/nvm)

To have nvm automatically sourced, accessible at login:

vi ~/.bashrc
And add this to the end:
source ~/.nvm/nvm.sh

Now, as root (of course):
vi /etc/bash.bashrc
And add this to the end:
export NVM_SYMLINK_CURRENT=true
(close your terminal sessions and log back in - not as root)

nvm install stable
nvm use stable

To set a default version to be used in any new shell, use the alias 'default':
nvm alias default stable

Notice that nvm installs everything to the ~/.nvm directory (circumventing the usual requirement and inherent danger of requiring sudo to be used for installing nodejs and its scripts):
/home/dmpelletier/.nvm/versions/node/v0.12.0/bin/node
/home/dmpelletier/.nvm/versions/node/v0.12.0/bin/npm

And if you want Ionic to be installed as well, as I did:
npm install ionic -g

@deesejohn

Debian Sid user here, used the first script with two changes

./configure --prefix=~/local

To

./configure --prefix=$HOME/local

as well as added -L to

curl -L https://www.npmjs.org/install.sh | sh
@matheuslc

@deesejohn Thank you very much!

@mysolbbb

Hi
I need to install the respensive theme edx-platform, but when I execute the commands :

npm install
bower install

gave me these errors:

npm ERR! install Couldn't read dependencies
npm ERR! package.json ENOENT, open '/package.json'
npm ERR! package.json This is most likely not a problem with npm itself.
npm ERR! package.json npm can't find a package.json file in your current directory.

npm ERR! System Linux 3.2.0-68-virtual
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install"
npm ERR! cwd /
npm ERR! node -v v0.10.32
npm ERR! npm -v 1.4.28
npm ERR! path /package.json
npm ERR! code ENOPACKAGEJSON
npm ERR! errno 34
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /npm-debug.log
npm ERR! not ok code 0

@jjssoftware

Linux Mint 17 here. The first method almost worked as-is for me except the path added to .bashrc in line#1 wasn't quite right so when attempting to start node at the CLI I was getting the following message echoed back:

The program 'node' can be found in the following packages:
 * node
 * nodejs-legacy
Try: sudo apt-get install <selected package>

So in my home directory I edited .bashrc:

nano .bashrc

..and changed the line that contained:
export PATH=$HOME/local/bin:$PATH
to
export PATH=$HOME/node-latest-install:$PATH

After that I was able to node --version and see that v0.12.0 was built and working

@futureRobin

Top one worked wonders for me.
Thanks so much.

@smmoosavi

Simplest way:
Download http://nodejs.org/dist/v0.12.0/node-v0.12.0-linux-x64.tar.gz and extract it some where. then add some where/bin to path. You can download other binary from here: http://nodejs.org/download/

echo prefix = ~/local >> ~/.npmrc
@firecentaur

Thank you for this, the top one worked for me!

@firecentaur

oh, by the way, for #1, the curl url is wrong, instead use: curl https://raw.githubusercontent.com/creationix/nvm/v0.24.0/install.sh | bash

@Jakobud
Jakobud commented Mar 26, 2015

curl https://www.npmjs.org/install.sh | sh

Should be changed to

curl https://www.npmjs.com/install.sh | sh

@McQuinTrix

forgive my ignorance, but i don't understand how to use this, can help ?(: my OS is Fedora 21(:

@jackhickey

Having spent 2 hours trying to get node/npm working properly in elm OS, I found this, used the top one.. everything working perfectly now. Thank you very very much!

@gitjeff05

Having trouble getting the first option to work. Maybe it would help if there were some explanation about what these commands do?

what does the second line . ~/.bashrc do?
what does ./configure --prefix=~/local do?

My guess is that these are trying to install into ~/local and that's why you place that in the path. If so, that did not work for me. I had to put export PATH=$HOME/node-latest-install:$PATH into my .bash_profile to get my system to recognize node. But now I cannot run npm from anywhere.

@tchalvak

As Jakobud says, the install url for npm has moved permanently from npmjs.org to npmjs.com

@monsteronfire

I tried the first method and kept getting stuck. Then yesterday I tried the second method (git-all-the-way) and it managed to work with a few modifications. Made a gist if anybody else wants to see: https://gist.github.com/monsteronfire/adcfd633aa78cfb72c60#file-node-npm-no-sudo

@stanusk
stanusk commented Apr 8, 2015

The first version did not work until I read post by gitjeff05 and added:
echo 'export PATH=$HOME/node-latest-install:$PATH' >> ~/.bashrc
Being completely new to this, it took a couple of minutes for me to realize, that it would be recognized only after bash restart..

As for the npm, this worked:
curl -L https://www.npmjs.com/install.sh | sh

@csullivan

Just needed to compile node, so the first option worked easy enough. Thank you!

@VerbGarden

@leto Using ./configure --prefix=$HOME/local per your suggestion helped OOTB Ubuntu 14.04 with method #1.

@jvkumar
jvkumar commented Apr 22, 2015

@isaacs , i could not get very first solution node-and-npm-in-30-seconds.sh work. And it ran over a minute and did bunch of stuff. Can you tell me how to clean and undo whatever this would have done?

@schoetbi
schoetbi commented May 4, 2015

I would suggest to have -j 8 as a command line argument for all make instantiations in all scripts. It does not hurt as far as I know.

@timfenney

On the "30 second" version (1st) I get:

xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

Installing Xcode shouldn't be a prerequisite to the "quick'n'dirty" solution IMHO

@easingthemes

Long time ago I used "30 sec" version and it served me fine.
Now I tried to update node, tried from various instructions but without success.
Than I came back to this gist and it worked great again.
I just manually downloaded and extracted latest version and used last 3 steps:

./configure --prefix=~/local
make install # ok, fine, this step probably takes more than 30 seconds...
curl -L https://www.npmjs.com/install.sh | sh // - L is from @stanusk comment

Thanks again.

@anchetaWern

if you installed node with nvm, this also works:

sudo chown -R `whoami` ~/.npm
@iainwatt

I installed using git all the way and this works (so far) but only in one terminal window, if I open a second window i get the classic
zsh: command not found: node
Can someone explain why this is happening?

@cazzoo
cazzoo commented May 23, 2015

Yet the first script does not work on all distribs.
The ./configure --prefix=~/local did not work.
Use ./configure --prefix=$HOME/local instead

@FeSantos

I use the first and worked for me! Thanks a lot..

@Toosman
Toosman commented May 27, 2015

@cazzoo Thank you. I'm running Debian 7 and the PATH setup didn't work (i couldn't just execute #node anywhere) but with your tip it works.

@laurencefass

i'm trying the first script but after executing (with no errors) the node-latest-install exists but the node command does nothing. i cant see any executable anywhere in the folder tree. do i need to add something to /bin somewhere. thanks.

@sriharrsha

mysolbb

I had the same error the thing is you have to install as root
not with sudo curl command

first step :sudo su
second step: curl -L https://www.npmjs.com/install.sh | sh

@shijukbabu

I tried the first script.

The last one didn't work. It showed

curl https://www.npmjs.org/install.sh | sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 51 100 51 0 0 63 0 --:--:-- --:--:-- --:--:-- 63
sh: 1: Moved: not found

So I tried following (I got from here http://stackoverflow.com/a/15508817/2353403 )
curl -O -L https://npmjs.org/install.sh
sh install.sh

But it's showing the error. node is not found

npm cannot be installed without node.js.
Install node first, and then try again.

Maybe node is installed, but not in the PATH?
Note that running as sudo can change envs.

PATH=/home/myuser/local/bin:/usr/lib/jvm/java-7-oracle/bin:/usr/lib/jvm/java-7-oracle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

@dcondrey

#!/bin/bash
VERSION=${VERSION:-$(wget -qO- https://nodejs.org/dist/latest/ | sed -nr 's|.*>node-(.*)\.pkg.*|\1|p')}
curl "https://nodejs.org/dist/latest/node-${VERSION}.pkg" > "$HOME/Downloads/node-latest.pkg"
sudo installer -store -pkg "$HOME/Downloads/node-latest.pkg" -target "/"
@c9jester
c9jester commented Jul 6, 2015

For the top script, I had to change the following:

curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1 ./configure --prefix=~/local

to

curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1 ./configure --prefix=$HOME/local

and

curl https://www.npmjs.org/install.sh | sh

to

curl -L https://www.npmjs.org/install.sh | sh

Everything else worked fine. Ubuntu Server 14.04.2 LTS

@tkanapar
tkanapar commented Jul 6, 2015

In the script we need to change https://www.npmjs.org/install.sh to https://www.npmjs.com/install.sh.
The URL has been moved and all the curls pointing to npmjs.org needs to be updated to npmjs.com

@wltiii
wltiii commented Jul 17, 2015

For script node-and-npm-in-30-seconds.sh, I found the same issue as c9jsester. The original configure prefix argument just shoved everything in a sub folder named ~ in the ~/node-latest-install directory. Not sure why that failed.

I actually split the curl command and install command:

curl -O -L https://npmjs.org/install.sh
sh install.sh

Running on Linux Mint 17.

@kuzeko
kuzeko commented Jul 19, 2015

Same problem as c9jsester and wltiii.
A part from that, I owe you a drink.
Thanks

@simonbcn
simonbcn commented Aug 5, 2015

Supposedly node last versions install npm, why is it necessary install again?
20150805_14 05 22_01

I have execute the second script (only the node part) on Ubuntu 14.04 64 bits and I have to change ~ to $HOME.
It installs all correctly but the npm command doesn't work, it does nothing. However it is installed:

$ ll $HOME/bin/nodejs/bin/
total 15M
-rwxrwxr-x 1 simon simon 15M ago  5 13:42 node*
lrwxrwxrwx 1 simon simon  38 ago  5 13:43 npm -> ../lib/node_modules/npm/bin/npm-cli.js*

$ ll $HOME/bin/nodejs/lib/node_modules/npm/bin/npm-cli.js 
-rwxrwxr-x 1 simon simon 1,9K ago  5 13:43 /home/simon/bin/nodejs/lib/node_modules/npm/bin/npm-cli.js*

I don't find the problem.

@simonbcn
simonbcn commented Aug 5, 2015

The third option is an aberration on Linux and a security breach.

@simonbcn
simonbcn commented Aug 5, 2015

Finally I've installed it with NVM. I think is the easiest and working option.

@h02e56
h02e56 commented Aug 30, 2015

After remove all my spreaded npm modules Option 4 works for me, not using wget.(MacOS)
NVM is a good option but i find more handy n

@ogrotten
ogrotten commented Oct 9, 2015

I suppose these are great for a fresh setup, but what about if I already have a bunch of shit installed?

COMPLETE AND TRUE SOLUTION
http://www.competa.com/blog/2014/12/how-to-run-npm-without-sudo/

@timeflying

node-and-npm-in-30-seconds.sh
Please remove 30-seconds. it's a lie.
It' took over 30 minutes, I can't wait then ctrl - c to stop it . Hate this lie.

@bahrmichael

In only-git-all-the-way.sh please change line 10 git clone git://github.com/joyent/node.git to git clone git://github.com/nodejs/node.git as the other repo was archieved.

@nick3499

Add parameter to make indicating total number of CPU cores.
Replace make with make -j 3 if you know you have a dual-core processor.(seems odd, but that's what it says)
See https://github.com/nodejs/node-v0.x-archive/wiki/Installation#building-on-linux
Used to speed up build.

@itsazzad

using-homebrew.sh perfect for my OSX Yosemite

@adhorrig

node-and-npm-in-30-seconds.sh took roughly an hour and five minutes using Ubuntu v14.04.03

@JGSolutions

Same here take over 30 mins to install and stopped the build

@neophoenix123

Hello,

I am a very new user to this and have failed my machine many times trying to set up the ember-cli environment properly. In the first assembly you have (create in 30 seconds) do I use the commands verbatim or is there other content I need to include on my own somewhere? Ex. do I need to add a dir path when typing ~/.bashrc?

Again forgive me I am a total green pea here so thank you for the time!

@SeAlgoAsoma

Said already but apparently ignored: Node is now at https://github.com/nodejs/node, not the repo given in the code. Updating it to save guys like me 20 minutes of hairpulling would be a kindness.

@SeAlgoAsoma

Well, this has been a fun use of an hour that could have been spent on something productive.

make[1]: *** [/home/username/node/out/Release/obj.target/v8_base/deps/v8/src/accessors.o] Error 1
make[1]: Leaving directory `/home/username/node/out'
make: *** [node] Error 2
username@domain.com [~]# cd npm
username@domain.com [~/npm]# make install
scripts/doc-build.sh doc/cli/npm-ls.md man/man1/npm-ls.1
make[1]: Entering directory `/home/username/npm'
node cli.js install marked-man --no-global
bash: node: command not found
make[1]: *** [node_modules/.bin/marked-man] Error 127
make[1]: Leaving directory `/home3/username/npm'
make: *** [man/man1/npm-ls.1] Error 2
username@domain.com [~/npm]# 

If it's 2016 or later, and you're on Bluehost, I hope you see this comment before you spent any time on this. Don't bother. None of these methods work anymore on Bluehost.

@magick93

None of the above methods worked:

node-and-npm-in-30-seconds.sh

sh: 1: Moved: not found

only-git-all-the-way.sh

anton@Charles:~/Documents/software/node$ ./only-git-all-the-way.sh
mkdir: cannot create directory ‘/home/anton/local’: File exists
Cloning into 'node'...
remote: Counting objects: 145792, done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 145792 (delta 3), reused 1 (delta 1), pack-reused 145783
Receiving objects: 100% (145792/145792), 126.50 MiB | 2.24 MiB/s, done.
Resolving deltas: 100% (107796/107796), done.
Checking connectivity... done.
./only-git-all-the-way.sh: line 12: ./configure: No such file or directory
make: *** No rule to make target install'. Stop. Cloning into 'npm'... remote: Counting objects: 52427, done. remote: Compressing objects: 100% (84/84), done. remote: Total 52427 (delta 48), reused 0 (delta 0), pack-reused 52343 Receiving objects: 100% (52427/52427), 26.04 MiB | 2.83 MiB/s, done. Resolving deltas: 100% (28953/28953), done. Checking connectivity... done. scripts/doc-build.sh doc/cli/npm-cache.md man/man1/npm-cache.1 make[1]: Entering directory/home/anton/Documents/software/node/npm'
node cli.js install marked-man --no-global
bash: node: command not found
make[1]: *** [node_modules/.bin/marked-man] Error 127
make[1]: Leaving directory `/home/anton/Documents/software/node/npm'
make: *** [man/man1/npm-cache.1] Error 2

take-ownership.sh

anton@Charles:~/Documents/software/node$ ./take-ownership.sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 4874k 100 4874k 0 0 1579k 0 0:00:03 0:00:03 --:--:-- 1579k
Checking for program g++ or c++ : /usr/bin/g++
Checking for program cpp : /usr/bin/cpp
Checking for program ar : /usr/bin/ar
Checking for program ranlib : /usr/bin/ranlib
Checking for g++ : ok
Checking for program gcc or cc : /usr/bin/gcc
Checking for gcc : ok
Checking for library dl : yes
Checking for openssl : not found
Checking for function SSL_library_init : not found
Checking for header openssl/crypto.h : not found
/home/anton/Documents/software/node/node-install/node-v0.4.3/wscript:340: error: Could not autodetect OpenSSL support. Make sure OpenSSL development packages are installed. Use configure --without-ssl to disable this message.
Project not configured (run 'waf configure' first)
make: *** [install] Error 1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 51 100 51 0 0 192 0 --:--:-- --:--:-- --:--:-- 192
sh: 1: Moved: not found

yet-another-option.sh

anton@Charles:~/Documents/software$ ./yet-another-option.sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 51 100 51 0 0 143 0 --:--:-- --:--:-- --:--:-- 143
sh: 1: Moved: not found

For a much easier method see http://www.competa.com/blog/2015/10/use-nvm-for-fun-and-profit-and-to-run-npm-without-sudo/

@kauffj
kauffj commented Mar 15, 2016

It looks like curl -L is required at least on some systems.

@cablegunmaster

node and npm installation

I just tried this, the last command didn't work.
Do I get in any trouble for leaving this out? Probably not installed completely.

 curl https://www.npmjs.org/install.sh | sh  *failed*

saying: file location not found.

@magick93 After some searching:

 curl -k -L https://npmjs.org/install.sh | sh

is the solution to your first installation if you still need it.
-k flag for a insecure connection and -L flag for a redirect if it can't find the location.

@ed-davies

sudo chown -R $USER /usr/local/{share/man,bin,lib/node,include/node}

This is a rather bad idea. One of the minor ways in which Linux security is less bad than that of Windows is that normally you don't have write access to any directories on your $PATH so it's harder for any exploit which can write arbitrary files to get them executed. To execute something not on the path you have to give the directory explicitly (e.g. “./a.out” rather than just “a.out”) which happens less often and is usually well controlled. By opening up /usr/local/bin to writes by any software you use you make your system a tiny bit more vulnerable.

I wonder if installing npm as its own user (say, “npm”) would be the best solution. To install something you'd use “ssh npm@localhost npm install --global some_package”. With the right prefix set up all uses of the packages could proceed as currently. Including it in the path for command line packages would be possible though ~npm/(bin|lib?)/command wouldn't be too terrible to type.

@BellAppLab

For posterity (since it took me a while to figure this one out).

If, while running the first script, you come across an error similar to this one:

g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.6/README.Bugs> for instructions.
make[1]: *** [/home/ubuntu/.nvm/src/node-    v0.8.1/out/Release/obj.target/v8_base/deps/v8/src/api.o] Error 4
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory `/home/ubuntu/.nvm/src/node-v0.8.1/out'
make: *** [node] Error 2
nvm: install v0.8.1 failed!

You might want to check if your system has a swap file set up.

Source

@BellAppLab

And you might want to replace the last line with:

curl -L https://www.npmjs.org/install.sh | sh

Source

@shashanthk

BellAppLab, your suggestion worked for me. And it's super easy. Thank you...

@shadiakiki1986

Using nvm was much easier and faster:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash
# open new shell
command -v nvm # should output "nvm"
nvm install node

... done in 30 seconds and installed node 6.6

@ashrih
ashrih commented Oct 17, 2016

i have Q about the mocha test, i have done the first step but my Q is are mocha going to test all the files ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment