#!/bin/bash # Update node.js binaries from the nodejs.org linux binaries # (Poor man's package management..) # # Configuration: # LATEST_NODE_VERSION="0.10.21" SHA1_X64="7528d2fa240a5dd88d37e4847cebec50ef40c8eb" SHA1_X86="b372abf9d9c53bfe675e2c3f71dcfdece44edddd" # # Script # if [ ! "$UID" -eq 0 ] ; then echo "Please run this script as root." >&2 exit 1 fi cd /root/ ## Determine architecture for download ARCHITECTURE=`uname -m` if [ "$ARCHITECTURE" = "x86_64" ] ; then TARNAME="node-v$LATEST_NODE_VERSION-linux-x64" SHA1_CHECK="$SHA1_X64" elif [ "$ARCHITECTURE" = "i686" ] ; then TARNAME="node-v$LATEST_NODE_VERSION-linux-x86" SHA1_CHECK="$SHA1_X86" else echo "Unknown architecture \"$ARCHITECTURE\"!" exit 1 fi ## Check current node installation NODEPATH=`which node` if [ $? -eq 0 ] ; then echo "Found node at $NODEPATH" CURRENT_VERSION=`$NODEPATH --version` if [ "$CURRENT_VERSION" = "v$LATEST_NODE_VERSION" ] ; then echo "Node is already the latest version." exit 0 fi echo "Node is an older version, removing..." pkill node # Safely remove older version if [ `dirname "$NODEPATH"` = "/usr/local/bin" ] ; then echo "Removing node files from /usr/local/bin..." rm /usr/local/bin/node rm /usr/local/bin/npm rm /usr/local/lib/dtrace/node.d rm /usr/local/share/man/man1/node.1 rm -r /usr/local/lib/node_modules # might exist if the old installation was built from source rm -r /usr/local/include/node 2>/dev/null else echo "Unknown node installation path, not removing..." fi fi ## Download file echo "Downloading..." wget -q -O - "http://nodejs.org/dist/v${LATEST_NODE_VERSION}/${TARNAME}.tar.gz" > /root/${TARNAME}.tar.gz if [ ! -s "/root/${TARNAME}.tar.gz" ] ; then echo "Download failed!" >&2 exit 1 fi DOWNLOADED_SHASUM=`sha1sum "/root/$TARNAME.tar.gz" | cut -d' ' -f 1` if [ ! "$DOWNLOADED_SHASUM" = "$SHA1_CHECK" ] ; then echo "WARNING: Downloaded file has mismatching sha1 \"${DOWNLOADED_SHASUM}\"!" >&2 rm "/root/${TARNAME}.tar.gz" exit 1 fi ## Unpack and extract tar zxf "/root/${TARNAME}.tar.gz" cd "/root/${TARNAME}" cp -rf bin/* /usr/local/bin cp -rf lib/* /usr/local/lib cp -rf share/* /usr/local/share cd ../ rm -r "/root/${TARNAME}" rm "${TARNAME}.tar.gz" echo "Node updated" node --version exit 0