Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Installing node and npm on Ubuntu 12.04 LTS and 64-bit Ubuntu 14.04 LTS.
  1. Navigate to http://nodejs.org/download/ and on the Linux Binaries (.tar.gz) row click to download the 64-bit version of the current latest release.

  2. Say you've downloaded node-v0.10.7-linux-x64.tar.gz into the Downloads directory. Then, open the terminal and type the following:

$ cd ~/Downloads
$ mkdir -p ~/local/node
$ tar xzf node-v0.10.7-linux-x64.tar.gz -C ~/local/node --strip-components=1
$ echo '# Node Enviroment Setup' >> ~/.bashrc
$ echo 'export PATH=$HOME/local/node/bin:$PATH' >> ~/.bashrc
$ echo 'export NODE_PATH=$HOME/local/node/lib/node_modules' >> ~/.bashrc
$ . ~/.bashrc
  1. No step 3. That's it.

Assumes a fresh install of Ubuntu 12.04 LTS.

  1. Setup the system to handle compiling and installing from source.

     $ sudo apt-get install build-essential
    
  2. If SSL support is needed then we will need to install libssl-dev.

     $ sudo apt-get install libssl-dev
    
  3. The install script uses curl, so we will need to install curl.

     $ sudo apt-get install curl
    
  4. Change into the directory containing the install script and source it.

     $ . node-and-npm-in-30s.sh
    

    N.B. This step takes a while.

  5. Finally, check that the latest version of node and npm are indeed installed.

     $ node -v
     $ npm -v
    

References:

# The install script
# Adapted from https://gist.github.com/579814
echo '# Added by install script for node.js and npm in 30s' >> ~/.bashrc
echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc
echo 'export NODE_PATH=$HOME/local/lib/node_modules' >> ~/.bashrc
. ~/.bashrc
mkdir -p ~/local
mkdir -p ~/Downloads/node-latest-install
cd ~/Downloads/node-latest-install
curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1
./configure --prefix=~/local # if SSL support is not required, use --without-ssl
make install # ok, fine, this step probably takes more than 30 seconds...
@ggutenberg

This comment has been minimized.

Show comment Hide comment
@ggutenberg

ggutenberg Mar 17, 2013

You should add -p to your mkdir commands in the .sh file:

mkdir -p ~/local
mkdir -p ~/Downloads/node-latest-install

You should add -p to your mkdir commands in the .sh file:

mkdir -p ~/local
mkdir -p ~/Downloads/node-latest-install

@dwayne

This comment has been minimized.

Show comment Hide comment
@dwayne

dwayne Apr 5, 2013

Thanks! That would be much better.

Owner

dwayne commented Apr 5, 2013

Thanks! That would be much better.

@czterystaczwarty

This comment has been minimized.

Show comment Hide comment
@czterystaczwarty

czterystaczwarty Apr 30, 2013

Remeber add ~/local/bin to PATH.

Remeber add ~/local/bin to PATH.

@dwayne

This comment has been minimized.

Show comment Hide comment
@dwayne

dwayne May 19, 2013

Yes. ~/local/bin is added to PATH. See line 5.

Owner

dwayne commented May 19, 2013

Yes. ~/local/bin is added to PATH. See line 5.

@felipedeboni

This comment has been minimized.

Show comment Hide comment
@felipedeboni

felipedeboni Aug 13, 2013

add: source ~/.bashrc to "reload" .bashrc automatically :)

add: source ~/.bashrc to "reload" .bashrc automatically :)

@tripflex

This comment has been minimized.

Show comment Hide comment
@tripflex

tripflex Oct 22, 2013

Should maybe add #!/bin/shell to top of script, or remove .sh extension ... as habit some will try to execute as "sh node-and-npm-in-30s.sh"

Should maybe add #!/bin/shell to top of script, or remove .sh extension ... as habit some will try to execute as "sh node-and-npm-in-30s.sh"

@MaxStacks

This comment has been minimized.

Show comment Hide comment
@MaxStacks

MaxStacks Dec 15, 2013

still works great!

still works great!

@loostro

This comment has been minimized.

Show comment Hide comment
@loostro

loostro Dec 22, 2013

I prefer to install in ~/.node instead of ~/local/node. This way it does not clutter my home dir (unless I want to view hidden files)

loostro commented Dec 22, 2013

I prefer to install in ~/.node instead of ~/local/node. This way it does not clutter my home dir (unless I want to view hidden files)

@aldo-gutierrez-tierconnect-com

This comment has been minimized.

Show comment Hide comment
@aldo-gutierrez-tierconnect-com

aldo-gutierrez-tierconnect-com Mar 31, 2014

I followed the install-on-64-bit-ubuntu-13.04 instructions and found 2 errors:

  1. Incorrect directory name it should be local instead of local-test

    $ tar xzf node-v0.10.7-linux-x64.tar.gz -C ~/local/node --strip-components=1
    
  2. Missing # for comment

    $ echo '#Node Enviroment Setup' >> ~/.bashrc
    

I followed the install-on-64-bit-ubuntu-13.04 instructions and found 2 errors:

  1. Incorrect directory name it should be local instead of local-test

    $ tar xzf node-v0.10.7-linux-x64.tar.gz -C ~/local/node --strip-components=1
    
  2. Missing # for comment

    $ echo '#Node Enviroment Setup' >> ~/.bashrc
    
@dwayne

This comment has been minimized.

Show comment Hide comment
@dwayne

dwayne Apr 4, 2014

Thanks for letting me know aldo. I've updated it.

Owner

dwayne commented Apr 4, 2014

Thanks for letting me know aldo. I've updated it.

@mlrsoft

This comment has been minimized.

Show comment Hide comment
@mlrsoft

mlrsoft Jul 28, 2014

I am using ubuntu 12.04.4 LTS
When i run the install script using the --without-ssl npm throws errors.
I know that npm per default download dependencies via https and that you can change that by issuing:

npm config set registry http://registry.npmjs.org/

but that throws the same error as npm -v does

the error:
$ npm -v

/local/lib/node_modules/npm/node_modules/request/node_modules/forever-agent/index.js:97
ForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest
^
TypeError: Cannot read property 'prototype' of undefined
at Object. (
/local/lib/node_modules/npm/node_modules/request/node_modules/forever-agent/index.js:97:55)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object. (~/local/lib/node_modules/npm/node_modules/request/request.js:21:20)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)

Dont know why npm still wants to use AgentSSL.prototype when using the --without-ssl flag
FYI: using the script without using the --without-ssl it works fine

mlrsoft commented Jul 28, 2014

I am using ubuntu 12.04.4 LTS
When i run the install script using the --without-ssl npm throws errors.
I know that npm per default download dependencies via https and that you can change that by issuing:

npm config set registry http://registry.npmjs.org/

but that throws the same error as npm -v does

the error:
$ npm -v

/local/lib/node_modules/npm/node_modules/request/node_modules/forever-agent/index.js:97
ForeverAgentSSL.prototype.addRequestNoreuse = AgentSSL.prototype.addRequest
^
TypeError: Cannot read property 'prototype' of undefined
at Object. (
/local/lib/node_modules/npm/node_modules/request/node_modules/forever-agent/index.js:97:55)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object. (~/local/lib/node_modules/npm/node_modules/request/request.js:21:20)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)

Dont know why npm still wants to use AgentSSL.prototype when using the --without-ssl flag
FYI: using the script without using the --without-ssl it works fine

@schtiady

This comment has been minimized.

Show comment Hide comment
@schtiady

schtiady May 8, 2015

Thanks :)

schtiady commented May 8, 2015

Thanks :)

@delbao

This comment has been minimized.

Show comment Hide comment
@delbao

delbao Nov 18, 2017

I got

In file included from ../deps/icu-small/source/common/unicode/uniset.h:17:0,
                 from ../deps/icu-small/source/common/bmpset.cpp:20:
../deps/icu-small/source/common/unicode/unistr.h: In constructor ‘icu_60::UnicodeString::UnicodeString(const uint16_t*)’:
../deps/icu-small/source/common/unicode/unistr.h:3014:7: error: type ‘icu_60::UnicodeString’ is not a direct base of ‘icu_60::UnicodeString’
../deps/icu-small/source/common/unicode/unistr.h: In constructor ‘icu_60::UnicodeString::UnicodeString(const uint16_t*, int32_t)’:
../deps/icu-small/source/common/unicode/unistr.h:3076:7: error: type ‘icu_60::UnicodeString’ is not a direct base of ‘icu_60::UnicodeString’
../deps/icu-small/source/common/unicode/unistr.h: In constructor ‘icu_60::UnicodeString::UnicodeString(uint16_t*, int32_t, int32_t)’:
../deps/icu-small/source/common/unicode/unistr.h:3169:7: error: type ‘icu_60::UnicodeString’ is not a direct base of ‘icu_60::UnicodeString’
make[1]: *** [/mnt/home/dbao/Downloads/node-latest-install/out/Release/obj.target/icuucx/deps/icu-small/source/common/bmpset.o] Error 1
rm 8fb62512c38147a744d80ecf8537e076f16e1315.intermediate
make[1]: Leaving directory `/mnt/home/dbao/Downloads/node-latest-install/out'
make: *** [node] Error 2

delbao commented Nov 18, 2017

I got

In file included from ../deps/icu-small/source/common/unicode/uniset.h:17:0,
                 from ../deps/icu-small/source/common/bmpset.cpp:20:
../deps/icu-small/source/common/unicode/unistr.h: In constructor ‘icu_60::UnicodeString::UnicodeString(const uint16_t*)’:
../deps/icu-small/source/common/unicode/unistr.h:3014:7: error: type ‘icu_60::UnicodeString’ is not a direct base of ‘icu_60::UnicodeString’
../deps/icu-small/source/common/unicode/unistr.h: In constructor ‘icu_60::UnicodeString::UnicodeString(const uint16_t*, int32_t)’:
../deps/icu-small/source/common/unicode/unistr.h:3076:7: error: type ‘icu_60::UnicodeString’ is not a direct base of ‘icu_60::UnicodeString’
../deps/icu-small/source/common/unicode/unistr.h: In constructor ‘icu_60::UnicodeString::UnicodeString(uint16_t*, int32_t, int32_t)’:
../deps/icu-small/source/common/unicode/unistr.h:3169:7: error: type ‘icu_60::UnicodeString’ is not a direct base of ‘icu_60::UnicodeString’
make[1]: *** [/mnt/home/dbao/Downloads/node-latest-install/out/Release/obj.target/icuucx/deps/icu-small/source/common/bmpset.o] Error 1
rm 8fb62512c38147a744d80ecf8537e076f16e1315.intermediate
make[1]: Leaving directory `/mnt/home/dbao/Downloads/node-latest-install/out'
make: *** [node] Error 2
@GlassUp

This comment has been minimized.

Show comment Hide comment
@GlassUp

GlassUp Nov 23, 2017

Same error here on a Pandaboard with Ubuntu 12.04:

In file included from ../deps/icu-small/source/common/unicode/uniset.h:17:0,
from ../deps/icu-small/source/common/bmpset.cpp:20:
../deps/icu-small/source/common/unicode/unistr.h: In constructor ‘icu_60::UnicodeString::UnicodeString(const uint16_t*)’:
../deps/icu-small/source/common/unicode/unistr.h:3014:7: error: type ‘icu_60::UnicodeString’ is not a direct base of ‘icu_60::UnicodeString’
../deps/icu-small/source/common/unicode/unistr.h: In constructor ‘icu_60::UnicodeString::UnicodeString(const uint16_t*, int32_t)’:
../deps/icu-small/source/common/unicode/unistr.h:3076:7: error: type ‘icu_60::UnicodeString’ is not a direct base of ‘icu_60::UnicodeString’
../deps/icu-small/source/common/unicode/unistr.h: In constructor ‘icu_60::UnicodeString::UnicodeString(uint16_t*, int32_t, int32_t)’:
../deps/icu-small/source/common/unicode/unistr.h:3169:7: error: type ‘icu_60::UnicodeString’ is not a direct base of ‘icu_60::UnicodeString’
make[1]: *** [/mnt/home/dbao/Downloads/node-latest-install/out/Release/obj.target/icuucx/deps/icu-small/source/common/bmpset.o] Error 1
rm 8fb62512c38147a744d80ecf8537e076f16e1315.intermediate
make[1]: Leaving directory `/mnt/home/dbao/Downloads/node-latest-install/out'
make: *** [node] Error 2

GlassUp commented Nov 23, 2017

Same error here on a Pandaboard with Ubuntu 12.04:

In file included from ../deps/icu-small/source/common/unicode/uniset.h:17:0,
from ../deps/icu-small/source/common/bmpset.cpp:20:
../deps/icu-small/source/common/unicode/unistr.h: In constructor ‘icu_60::UnicodeString::UnicodeString(const uint16_t*)’:
../deps/icu-small/source/common/unicode/unistr.h:3014:7: error: type ‘icu_60::UnicodeString’ is not a direct base of ‘icu_60::UnicodeString’
../deps/icu-small/source/common/unicode/unistr.h: In constructor ‘icu_60::UnicodeString::UnicodeString(const uint16_t*, int32_t)’:
../deps/icu-small/source/common/unicode/unistr.h:3076:7: error: type ‘icu_60::UnicodeString’ is not a direct base of ‘icu_60::UnicodeString’
../deps/icu-small/source/common/unicode/unistr.h: In constructor ‘icu_60::UnicodeString::UnicodeString(uint16_t*, int32_t, int32_t)’:
../deps/icu-small/source/common/unicode/unistr.h:3169:7: error: type ‘icu_60::UnicodeString’ is not a direct base of ‘icu_60::UnicodeString’
make[1]: *** [/mnt/home/dbao/Downloads/node-latest-install/out/Release/obj.target/icuucx/deps/icu-small/source/common/bmpset.o] Error 1
rm 8fb62512c38147a744d80ecf8537e076f16e1315.intermediate
make[1]: Leaving directory `/mnt/home/dbao/Downloads/node-latest-install/out'
make: *** [node] Error 2

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