forked from coolaj86/node-installer.sh
Update setup-node-ubuntu.bash to allow for `Marvell` OS. This is for our development purposes. In the future, we will have a fully custom image with the name containing `Daplie`
This commit is contained in:
parent
b96b79f3ed
commit
de522df09b
|
@ -1,69 +1,350 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Installs node.js only (no development dependencies) for both Ubuntu and OS X
|
||||
|
||||
#
|
||||
# See https://git.daplie.com/coolaj86/node-install-script
|
||||
#
|
||||
|
||||
# curl -fsSL bit.ly/nodejs-min | bash
|
||||
# wget -nv bit.ly/nodejs-min -O - | bash
|
||||
|
||||
# curl -fsSL https://example.com/setup-min.bash | bash
|
||||
# wget -nv https://example.com/setup-min.bash -O - | bash
|
||||
|
||||
dont_install_deps="$1"
|
||||
set -e
|
||||
set -u
|
||||
set -o pipefail
|
||||
#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"
|
||||
BASE_URL="https://git.daplie.com/coolaj86/node-install-script/raw/master"
|
||||
#NO_FAIL2BAN=""
|
||||
NO_FAIL2BAN="nope"
|
||||
OS="unsupported"
|
||||
ARCH=""
|
||||
NODEJS_VER=""
|
||||
SETUP_FILE=""
|
||||
|
||||
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
|
||||
clear
|
||||
|
||||
if [ -n "$(arch | grep aarch64)" ]; then
|
||||
ARCH="arm64"
|
||||
elif [ -n "$(arch | grep 64)" ]; then
|
||||
ARCH="x64"
|
||||
elif [ -n "$(arch | grep armv8l)" ]; then
|
||||
ARCH="arm64"
|
||||
elif [ -n "$(arch | grep armv7l)" ]; then
|
||||
ARCH="armv7l"
|
||||
elif [ -n "$(arch | grep armv6l)" ]; then
|
||||
ARCH="armv6l"
|
||||
else
|
||||
ARCH="x86"
|
||||
fi
|
||||
#########################
|
||||
# Which OS and version? #
|
||||
#########################
|
||||
|
||||
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 [ "$(uname | grep -i 'Darwin')" ]; then
|
||||
OSX_VER="$(sw_vers | grep ProductVersion | cut -d':' -f2 | cut -f2)"
|
||||
OSX_MAJOR="$(echo ${OSX_VER} | cut -d'.' -f1)"
|
||||
OSX_MINOR="$(echo ${OSX_VER} | cut -d'.' -f2)"
|
||||
OSX_PATCH="$(echo ${OSX_VER} | cut -d'.' -f3)"
|
||||
|
||||
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"
|
||||
#
|
||||
# Major
|
||||
#
|
||||
if [ "$OSX_MAJOR" -lt 10 ]; then
|
||||
echo "unsupported OS X version (os 9-)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p ${NODEJS_UNTAR}/
|
||||
tar xf ${NODEJS_LOCAL} -C ${NODEJS_UNTAR}/ --strip-components=1
|
||||
rm ${NODEJS_UNTAR}/{LICENSE,CHANGELOG.md,README.md}
|
||||
sudo rsync -a "${NODEJS_UNTAR}/" "$node_install_path/"
|
||||
if [ "$OSX_MAJOR" -gt 10 ]; then
|
||||
echo "unsupported OS X version (os 11+)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# Minor
|
||||
#
|
||||
if [ "$OSX_MINOR" -le 5 ]; then
|
||||
echo "unsupported OS X version (os 10.5-)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sudo chown -R $(whoami) "$node_install_path/lib/node_modules/"
|
||||
sudo chown $(whoami) ""$node_install_path"/bin/"
|
||||
# Snow
|
||||
if [ "$OSX_MINOR" -eq 6 ]; then
|
||||
OS='snow'
|
||||
fi
|
||||
|
||||
# Lion
|
||||
if [ $OSX_MINOR -eq 7 ]; then
|
||||
OS='lion'
|
||||
fi
|
||||
|
||||
# Mountain Lion
|
||||
if [ "$OSX_MINOR" -eq 8 ]; then
|
||||
OS='mountain'
|
||||
fi
|
||||
|
||||
# Mavericks, Yosemite
|
||||
if [ "$OSX_MINOR" -ge 9 ]; then
|
||||
OS='mavericks'
|
||||
fi
|
||||
|
||||
if [ -n "$(sysctl hw | grep 64bit | grep ': 1')" ]; then
|
||||
ARCH="64"
|
||||
else
|
||||
ARCH="32"
|
||||
fi
|
||||
elif [ "$(uname | grep -i 'Linux')" ]; then
|
||||
if [ ! -f "/etc/issue" ]; then
|
||||
echo "unsupported linux os"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -n "$(uname -a | grep 64)" ]; then
|
||||
ARCH="64"
|
||||
else
|
||||
ARCH="32"
|
||||
fi
|
||||
|
||||
if [ "$(cat /etc/issue | grep -i 'Ubuntu')" ]; then
|
||||
OS='ubuntu'
|
||||
elif [ "$(cat /etc/issue | grep -i 'Linux Mint')" ]; then
|
||||
OS='ubuntu'
|
||||
elif [ "$(cat /etc/issue | grep -i 'elementary OS')" ]; then
|
||||
OS='ubuntu'
|
||||
elif [ "$(cat /etc/issue | grep -i 'Debian')" ]; then
|
||||
OS='ubuntu'
|
||||
elif [ "$(cat /etc/issue | grep -i 'Trisquel')" ]; then
|
||||
OS='ubuntu'
|
||||
elif [ "$(cat /etc/issue | grep -i 'Zorin')" ]; then
|
||||
OS='ubuntu'
|
||||
elif [ "$(cat /etc/issue | grep -i 'Raspbian')" ]; then
|
||||
OS='raspbian'
|
||||
elif [ "$(cat /etc/issue | grep -i 'Fedora')" ]; then
|
||||
OS='fedora'
|
||||
elif [ "$(cat /etc/issue | grep -i 'Marvell')" ]; then
|
||||
OS='marvell'
|
||||
fi
|
||||
else
|
||||
echo "unsupported unknown os (non-mac, non-linux)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "${OS}" in
|
||||
fedora)
|
||||
echo "FEDORA not yet supported (feel free to pull request)"
|
||||
exit 1
|
||||
;;
|
||||
ubuntu)
|
||||
SETUP_FILE="ubuntu"
|
||||
;;
|
||||
raspbian)
|
||||
SETUP_FILE="ubuntu"
|
||||
;;
|
||||
marvell)
|
||||
SETUP_FILE="ubuntu"
|
||||
;;
|
||||
yosemite)
|
||||
# mavericks
|
||||
SETUP_FILE="mavericks"
|
||||
;;
|
||||
mavericks)
|
||||
SETUP_FILE="mavericks"
|
||||
;;
|
||||
mountain)
|
||||
echo "Mountain Lion not yet supported (feel free to pull request)"
|
||||
exit 1
|
||||
;;
|
||||
lion)
|
||||
echo "Lion not yet supported (feel free to pull request)"
|
||||
exit 1
|
||||
;;
|
||||
snow)
|
||||
echo "Snow Leopard not yet supported (feel free to pull request)"
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
echo "unsupported unknown os ${OS}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
#######################
|
||||
# Download installers #
|
||||
#######################
|
||||
|
||||
if [ -z "$dont_install_deps" ]; then
|
||||
echo "Preparing to install node.js (and common development dependencies) for ${OS}" "${ARCH}"
|
||||
else
|
||||
echo "Preparing to install node.js (minimal) for ${OS}" "${ARCH}"
|
||||
fi
|
||||
|
||||
INSTALL_DEPS_FILE="setup-deps-${SETUP_FILE}.bash"
|
||||
INSTALL_FILE="setup-node-${SETUP_FILE}.bash"
|
||||
if [ ! -e "/tmp/${INSTALL_FILE}" ]; then
|
||||
if [ -n "$(type -p curl)" ]; then
|
||||
curl --silent "${BASE_URL}/${INSTALL_FILE}" \
|
||||
-o "/tmp/${INSTALL_FILE}" || echo 'error downloading os setup script'
|
||||
elif [ -n "$(type -p wget)" ]; then
|
||||
wget --quiet "${BASE_URL}/${INSTALL_FILE}" \
|
||||
-O "/tmp/${INSTALL_FILE}" || echo 'error downloading os setup script'
|
||||
else
|
||||
echo "Found neither 'curl' nor 'wget'. Can't Continue."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$dont_install_deps" ]; then
|
||||
if [ ! -e "/tmp/${INSTALL_DEPS_FILE}" ]; then
|
||||
if [ -n "$(type -p curl)" ]; then
|
||||
curl --silent "${BASE_URL}/${INSTALL_DEPS_FILE}" \
|
||||
-o "/tmp/${INSTALL_DEPS_FILE}" || echo 'error downloading os deps script: '"${BASE_URL}/${INSTALL_DEPS_FILE}"
|
||||
elif [ -n "$(type -p wget)" ]; then
|
||||
wget --quiet "${BASE_URL}/${INSTALL_DEPS_FILE}" \
|
||||
-O "/tmp/${INSTALL_DEPS_FILE}" || echo 'error downloading os deps script: '"${BASE_URL}/${INSTALL_DEPS_FILE}"
|
||||
else
|
||||
echo "Found neither 'curl' nor 'wget'. Can't Continue."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -e "/tmp/${INSTALL_FILE}" ]
|
||||
then
|
||||
echo "Error Downloading Install File"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$dont_install_deps" ]; then
|
||||
if [ ! -e "/tmp/${INSTALL_DEPS_FILE}" ]
|
||||
then
|
||||
echo "Error Downloading Deps File"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
#########################
|
||||
# Which node.js VERSION ? #
|
||||
#########################
|
||||
|
||||
if [ -f "/tmp/NODEJS_VER" ]; then
|
||||
NODEJS_VER=$(cat /tmp/NODEJS_VER | grep v)
|
||||
elif [ -f "/tmp/IOJS_VER" ]; then
|
||||
NODEJS_VER=$(cat /tmp/IOJS_VER | grep v)
|
||||
fi
|
||||
|
||||
if [ -n "$NODEJS_VER" ]; then
|
||||
NODEJS_VERT=$(echo ${NODEJS_VER} | cut -c 2- | cut -d '.' -f1)
|
||||
|
||||
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
|
||||
fi
|
||||
|
||||
if [ -z "$NODEJS_VER" ]; then
|
||||
if [ -n "$(type -p curl)" ]; then
|
||||
NODEJS_VER=$(curl -fsL "$NODEJS_BASE_URL/dist/index.tab" | head -2 | tail -1 | cut -f 1) \
|
||||
|| echo 'error automatically determining current node.js version'
|
||||
elif [ -n "$(type -p wget)" ]; then
|
||||
NODEJS_VER=$(wget --quiet "$NODEJS_BASE_URL/dist/index.tab" -O - | head -2 | tail -1 | cut -f 1) \
|
||||
|| echo 'error automatically determining current node.js version'
|
||||
else
|
||||
echo "Found neither 'curl' nor 'wget'. Can't Continue."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
#
|
||||
# node
|
||||
#
|
||||
if [ -z "${NODE_PATH-}" ]; then
|
||||
if [ -n "$(type -p node | grep node 2>/dev/null)" ]; then
|
||||
# /usr/local/bin/node => /usr/local
|
||||
node_install_path="$(dirname $(dirname $(type -p node)))"
|
||||
else
|
||||
node_install_path=$PREFIX/usr/local
|
||||
fi
|
||||
else
|
||||
node_install_path=$(dirname $(dirname $NODE_PATH))
|
||||
fi
|
||||
echo "Install path is $node_install_path"
|
||||
if [ -e "$node_install_path/bin/node" ]; then
|
||||
# node of some version is already installed
|
||||
if [ "${NODEJS_VER}" == "$($node_install_path/bin/node -v 2>/dev/null)" ]; then
|
||||
echo node ${NODEJS_VER} is already installed
|
||||
else
|
||||
echo ""
|
||||
echo "HEY, LISTEN:"
|
||||
echo ""
|
||||
echo "node.js is already installed as node $($node_install_path/bin/node -v | grep v)"
|
||||
echo ""
|
||||
echo "to reinstall please first run: rm $node_install_path/bin/node"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
NODEJS_VER=""
|
||||
fi
|
||||
|
||||
if [ -n "${NODEJS_VER}" ]; then
|
||||
bash "/tmp/${INSTALL_FILE}" "${NODEJS_VER}"
|
||||
fi
|
||||
|
||||
sudo chown -R $(whoami) $node_install_path/lib/node_modules
|
||||
|
||||
echo ""
|
||||
|
||||
if [ -z "$dont_install_deps" ]; then
|
||||
|
||||
################
|
||||
# DEPENDENCIES #
|
||||
################
|
||||
|
||||
#if [ -z "$(which fail2ban-server | grep fail2ban)" ]; then
|
||||
# echo ""
|
||||
# echo "Your server didn't come with fail2ban preinstalled!!!"
|
||||
# echo "Among other things, fail2ban secures ssh so that your server isn't reaped by botnets."
|
||||
# echo ""
|
||||
# echo "Since you're obviously connecting this computer to a network, you should install fail2ban before continuing"
|
||||
# echo ""
|
||||
# echo "Install fail2ban? [Y/n]"
|
||||
# echo "(if unsure, just hit [enter])"
|
||||
# read INSTALL_FAIL2BAN
|
||||
#
|
||||
# if [ "n" == "${INSTALL_FAIL2BAN}" ] || [ "no" == "${INSTALL_FAIL2BAN}" ] || [ "N" == "${INSTALL_FAIL2BAN}" ] || [ "NO" == "${INSTALL_FAIL2BAN}" ]; then
|
||||
# echo ""
|
||||
# echo "I don't think you understand: This is important."
|
||||
# echo ""
|
||||
# echo "Your server will be under constant attack by botnets via ssh."
|
||||
# echo "It only takes a few extra seconds to install and the defaults are adequate for protecting you."
|
||||
# echo ""
|
||||
# echo "Change your mind?"
|
||||
# echo "Ready to install fail2ban? [Y/n]"
|
||||
# read INSTALL_FAIL2BAN
|
||||
# if [ "n" == "${INSTALL_FAIL2BAN}" ] || [ "no" == "${INSTALL_FAIL2BAN}" ] || [ "N" == "${INSTALL_FAIL2BAN}" ] || [ "NO" == "${INSTALL_FAIL2BAN}" ]; then
|
||||
# clear
|
||||
# echo "you make me sad :-("
|
||||
# sleep 0.5
|
||||
# echo "but whatever, it's your funeral..."
|
||||
# sleep 1
|
||||
# NO_FAIL2BAN="nope"
|
||||
# else
|
||||
# echo "Phew, dodged the bullet on that one... Will install fail2ban.. :-)"
|
||||
# fi
|
||||
# fi
|
||||
#fi
|
||||
|
||||
bash "/tmp/${INSTALL_DEPS_FILE}" "${NO_FAIL2BAN}"
|
||||
|
||||
# yarn
|
||||
#if [ -z "$(type -p yarn)" ]; then
|
||||
# echo "installing yarn..."
|
||||
# npm install --silent yarn -g > /dev/null
|
||||
#fi
|
||||
|
||||
# jshint
|
||||
if [ -z "$(type -p jshint)" ]; then
|
||||
echo "installing jshint..."
|
||||
#yarn global add jshint > /dev/null
|
||||
$node_install_path/bin/npm install -g jshint > /dev/null
|
||||
fi
|
||||
|
||||
echo ""
|
||||
fi
|
Loading…
Reference in New Issue