diff --git a/README.md b/README.md index 5d74d16..5e7ce33 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,17 @@ # Easy Install node.js +| Sponsored by [Daplie](https://daplie.com) | + Automated node.js installers for OS X and Ubuntu **node.js only** (no dev tools) ```bash # install node.js without development dependencies -curl -fsSL bit.ly/install-min-node | bash +curl -fsSL bit.ly/node-installer | bash -s --no-dev-deps # using wget instead of curl (Ubuntu) -wget -nv bit.ly/install-min-node -O - | bash +wget -nv bit.ly/node-installer -O - | bash -s --no-dev-deps ``` **node.js + dev tools** @@ -17,10 +19,13 @@ wget -nv bit.ly/install-min-node -O - | bash Install node.js and basic development tools - git, node, gcc, pkg-config, etc ```bash -curl -L bit.ly/install-dev-node -o ./node-dev; bash ./node-dev +curl -fsSL bit.ly/node-installer -o ./node-installer.sh; bash ./node-installer.sh --dev-deps + +# or wget +wget -nv bit.ly/node-installer -O - ./node-installer.sh; bash ./node-installer.sh --dev-deps ``` - +*Note*: [bit.ly/node-installer](https://bit.ly/node-installer) simple redirects to ## Screencast @@ -34,8 +39,24 @@ echo "Current node.js version is $(curl -fsSL https://nodejs.org/dist/index.tab ```bash # To install a specific version rather than defaulting to latest -# latest version at time of writing are v4.4.1 and v5.9.1 -echo "v7.9.0" > /tmp/NODEJS_VER +# latest version at time of writing are v8.9.0 and v9.0.0 +echo "v8.9.0" > /tmp/NODEJS_VER +``` + +## Choosing an install location + +Just set BOTH `NODE_PATH` and `NPM_CONFIG_PREFIX`. +The install path will be the preceding `lib/node_modules` +(which you usually want to be the same as `NPM_CONFIG_PREFIIX` anyway). + +```bash +export NPM_CONFIG_PREFIX=/tmp/user/local +export NODE_PATH=/tmp/user/local/lib/node_modules + +curl -fsSL bit.ly/node-installer -o ./node-installer.sh; bash ./node-installer.sh --dev-deps + +# If you want to add the install location to your PATH +PATH=$PATH:/tmp/user/local/bin ``` ## Notes @@ -65,7 +86,7 @@ Type `agree` and hit enter to accept the license. Now you can install node.js ```bash -curl -fsSL bit.ly/install-dev-node -o /tmp/node-dev.sh; bash /tmp/node-dev.sh +curl -fsSL bit.ly/node-installer -o /tmp/node-installer.sh; bash /tmp/node-installer.sh --dev-deps ``` *TODO*: Make it easier to accepting the license (automatic?) @@ -73,7 +94,7 @@ curl -fsSL bit.ly/install-dev-node -o /tmp/node-dev.sh; bash /tmp/node-dev.sh ### Ubuntu Linux ```bash -wget -nv bit.ly/install-dev-node -O /tmp/node-dev.sh; bash /tmp/node-dev.sh +wget -nv bit.ly/node-installer -O /tmp/node-installer.sh; bash /tmp/node-installer.sh --dev-deps ``` ### Other things you should know diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..0481186 --- /dev/null +++ b/install.sh @@ -0,0 +1,356 @@ +#!/bin/bash + +# Installs node.js only (no development dependencies) for both Ubuntu and OS X + +# +# See https://git.coolaj86.com/coolaj86/node-installer.sh +# + +# 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 + +# Not every platform has or needs sudo, gotta save them O(1)s... +sudo_cmd="" +((EUID)) && [[ -z "$ANDROID_ROOT" ]] && sudo_cmd="sudo" + +deps_flag="$1" +set -e +set -u +#set -o pipefail + +if [ -z "${PREFIX-}" ]; then + PREFIX="" +fi + +NODEJS_NAME="node" +NODEJS_BASE_URL="https://nodejs.org" +BASE_URL="https://git.coolaj86.com/coolaj86/node-installer.sh/raw/master" +#NO_FAIL2BAN="" +NO_FAIL2BAN="nope" +OS="unsupported" +ARCH="" +NODEJS_VER="" +SETUP_FILE="" + +clear + +######################### +# Which OS and version? # +######################### + +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)" + + # + # Major + # + if [ "$OSX_MAJOR" -lt 10 ]; then + echo "unsupported OS X version (os 9-)" + exit 1 + fi + + 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 + + # 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 [ "--dev-deps" == "$deps_flag" ]; 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 -L "${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 [ "--dev-deps" == "$deps_flag" ]; then + if [ ! -e "/tmp/${INSTALL_DEPS_FILE}" ]; then + if [ -n "$(type -p curl)" ]; then + curl --silent -L "${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 [ "--dev-deps" == "$deps_flag" ]; 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 -n 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 -n 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)))" + echo "NODE_PATH is not set. Using existing node install path: '$node_install_path'" + else + node_install_path=$PREFIX/usr/local + echo "NODE_PATH is not set. Using default install path '$node_install_path'" + fi +else + node_install_path=$(dirname $(dirname $NODE_PATH)) + echo "NODE_PATH is '$NODE_PATH', so install path is '$node_install_path'" +fi +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_cmd chown -R $(whoami) $node_install_path/lib/node_modules + +echo "" + +if [ "--dev-deps" == "$deps_flag" ]; 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 diff --git a/setup-min.sh b/setup-min.sh index 0734a59..af68075 100644 --- a/setup-min.sh +++ b/setup-min.sh @@ -3,7 +3,7 @@ # Installs node.js + dependencies for both Ubuntu and OS X # -# See https://git.daplie.com/coolaj86/node-install-script +# See https://git.colaj86.com/coolaj86/node-installer.sh # # curl -fsSL https://example.com/setup.bash | bash @@ -12,18 +12,18 @@ set -e set -u -BASE_URL="https://git.daplie.com/Daplie/node-install-script/raw/master" +BASE_URL="https://git.coolaj86.com/coolaj86/node-installer.sh/raw/master" ####################### # Download installers # ####################### -INSTALL_FILE_REMOTE="setup.bash" -INSTALL_FILE="node.setup.bash" +INSTALL_FILE_REMOTE="install.sh" +INSTALL_FILE="node-installer.sh" if [ ! -e "/tmp/${INSTALL_FILE}" ] then if [ -n "$(which curl)" ]; then - curl --silent "${BASE_URL}/${INSTALL_FILE_REMOTE}" \ + curl --silent -L "${BASE_URL}/${INSTALL_FILE_REMOTE}" \ -o "/tmp/${INSTALL_FILE}" || echo 'error setup script: '"${BASE_URL}/${INSTALL_FILE_REMOTE}" elif [ -n "$(which wget)" ]; then wget --quiet "${BASE_URL}/${INSTALL_FILE_REMOTE}" \ diff --git a/setup.bash b/setup.bash index b6ce0d6..abd3ab1 100644 --- a/setup.bash +++ b/setup.bash @@ -1,354 +1,44 @@ #!/bin/bash -# Installs node.js only (no development dependencies) for both Ubuntu and OS X +# Installs node.js + dependencies for both Ubuntu and OS X # -# See https://git.daplie.com/Daplie/node-install-script +# See https://git.colaj86.com/coolaj86/node-installer.sh # -# curl -fsSL bit.ly/nodejs-min | bash -# wget -nv bit.ly/nodejs-min -O - | bash +# curl -fsSL https://example.com/setup.bash | bash +# wget -nv https://example.com/setup.bash -O - | bash -# curl -fsSL https://example.com/setup-min.bash | bash -# wget -nv https://example.com/setup-min.bash -O - | bash - -# Not every platform has or needs sudo, gotta save them O(1)s... -sudo_cmd="" -((EUID)) && [[ -z "$ANDROID_ROOT" ]] && sudo_cmd="sudo" - -dont_install_deps="$1" set -e set -u -#set -o pipefail -if [ -z "${PREFIX-}" ]; then - PREFIX="" -fi - -NODEJS_NAME="node" -NODEJS_BASE_URL="https://nodejs.org" -BASE_URL="https://git.daplie.com/Daplie/node-install-script/raw/master" -#NO_FAIL2BAN="" -NO_FAIL2BAN="nope" -OS="unsupported" -ARCH="" -NODEJS_VER="" -SETUP_FILE="" - -clear - -######################### -# Which OS and version? # -######################### - -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)" - - # - # Major - # - if [ "$OSX_MAJOR" -lt 10 ]; then - echo "unsupported OS X version (os 9-)" - exit 1 - fi - - 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 - - # 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 +BASE_URL="https://git.coolaj86.com/coolaj86/node-installer.sh/raw/master" ####################### # 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' +INSTALL_FILE_REMOTE="install.sh" +INSTALL_FILE="node-installer.sh" +if [ ! -e "/tmp/${INSTALL_FILE}" ] +then + if [ -n "$(which curl)" ]; then + curl --silent -L "${BASE_URL}/${INSTALL_FILE_REMOTE}" \ + -o "/tmp/${INSTALL_FILE}" || echo 'error setup script: '"${BASE_URL}/${INSTALL_FILE_REMOTE}" + elif [ -n "$(which wget)" ]; then + wget --quiet "${BASE_URL}/${INSTALL_FILE_REMOTE}" \ + -O "/tmp/${INSTALL_FILE}" || echo 'error setup script: '"${BASE_URL}/${INSTALL_FILE_REMOTE}" 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 -n 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 -n 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_cmd 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 +bash "/tmp/${INSTALL_FILE}"