74 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| set -e
 | |
| set -u
 | |
| set -o pipefail
 | |
| 
 | |
| if [ -z "${PREFIX-}" ]; then
 | |
|   PREFIX=""
 | |
| fi
 | |
| 
 | |
| if [ -z "${NODE_PATH-}" ]; then
 | |
|   node_install_path=$PREFIX/usr/local
 | |
| else
 | |
|   node_install_path=$(dirname $(dirname $NODE_PATH))
 | |
| fi
 | |
| 
 | |
| NODEJS_VER=${1}
 | |
| NODEJS_VERT=$(echo ${NODEJS_VER} | cut -c 2- | cut -d '.' -f1)
 | |
| 
 | |
| NODEJS_NAME="node"
 | |
| NODEJS_BASE_URL="https://nodejs.org"
 | |
| 
 | |
| if [ $NODEJS_VERT -ge 1 ] && [ $NODEJS_VERT -lt 4 ]
 | |
| then
 | |
|   echo "Selecting io.js instead of node.js for this version (>= 1.0.0 < 4.0.0)"
 | |
|   NODEJS_BASE_URL="https://iojs.org"
 | |
|   NODEJS_NAME="iojs"
 | |
| fi
 | |
| 
 | |
| if [ -n "$(uname -a | grep aarch64)" ]; then
 | |
|   ARCH="arm64"
 | |
| elif [ -n "$(uname -a | grep 64)" ]; then
 | |
|   ARCH="x64"
 | |
| elif [ -n "$(uname -a | grep armv8l)" ]; then
 | |
|   ARCH="arm64"
 | |
| elif [ -n "$(uname -a | grep armv7l)" ]; then
 | |
|   ARCH="armv7l"
 | |
| elif [ -n "$(uname -a | grep armv6l)" ]; then
 | |
|   ARCH="armv6l"
 | |
| else
 | |
|   ARCH="x86"
 | |
| fi
 | |
| 
 | |
| NODEJS_REMOTE="${NODEJS_BASE_URL}/dist/${NODEJS_VER}/${NODEJS_NAME}-${NODEJS_VER}-linux-${ARCH}.tar.gz"
 | |
| NODEJS_LOCAL="/tmp/${NODEJS_NAME}-${NODEJS_VER}-linux-${ARCH}.tar.gz"
 | |
| NODEJS_UNTAR="/tmp/${NODEJS_NAME}-${NODEJS_VER}-linux-${ARCH}"
 | |
| 
 | |
| if [ -n "${NODEJS_VER}" ]; then
 | |
|   echo "installing ${NODEJS_NAME} as ${NODEJS_NAME} ${NODEJS_VER}..."
 | |
| 
 | |
|   if [ -n "$(which curl 2>/dev/null)" ]; then
 | |
|     curl -fsSL ${NODEJS_REMOTE} -o ${NODEJS_LOCAL} || echo 'error downloading ${NODEJS_NAME}'
 | |
|   elif [ -n "$(which wget 2>/dev/null)" ]; then
 | |
|     wget --quiet ${NODEJS_REMOTE} -O ${NODEJS_LOCAL} || echo 'error downloading ${NODEJS_NAME}'
 | |
|   else
 | |
|     echo "'wget' and 'curl' are missing. Please run the following command and try again"
 | |
|     echo "\tsudo apt-get install --yes curl wget"
 | |
|     exit 1
 | |
|   fi
 | |
| 
 | |
|   mkdir -p ${NODEJS_UNTAR}/
 | |
|   # --strip-components isn't portable, switch to portable version by performing move step after untar
 | |
|   tar xf ${NODEJS_LOCAL} -C ${NODEJS_UNTAR}/ #--strip-components=1
 | |
|   mv ${NODEJS_UNTAR}/${NODEJS_NAME}-${NODEJS_VER}-linux-${ARCH}/* ${NODEJS_UNTAR}/
 | |
|   rm -rf ${NODEJS_UNTAR}/${NODEJS_NAME}-${NODEJS_VER}-linux-${ARCH} # clean up the temporary unzip folder
 | |
|   rm ${NODEJS_UNTAR}/{LICENSE,CHANGELOG.md,README.md} 
 | |
|   echo "$node_install_path"
 | |
|   echo "${NODEJS_UNTAR}"
 | |
|   sudo rsync -av "${NODEJS_UNTAR}/" "$node_install_path/"
 | |
|   echo "Done copying"
 | |
| 
 | |
|   sudo chown -R $(whoami) "$node_install_path/lib/node_modules/"
 | |
|   sudo chown $(whoami) ""$node_install_path"/bin/"
 | |
| fi |