This commit is contained in:
AJ ONeal 2015-01-15 15:41:04 -07:00
parent b44332e44d
commit e013693961
7 changed files with 272 additions and 241 deletions

69
setup-deps-mavericks.bash Normal file
View File

@ -0,0 +1,69 @@
#!/bin/bash
# curl -fsSL https://ldsconnect.org/setup-osx.bash | bash -c
NO_FAIL2BAN=${1}
echo ""
echo ""
# XCode
# testing for which git, gcc, etc will not work because the tools are aliased to the install script
if [ -z "$(xcode-select --print-path 2>/dev/null)" ] || [ -z "$(git --version 2>/dev/null)" ]; then
echo "Hey You!!!"
echo ""
echo "A thingy is going to pop up and ask you to install 'command line developer tools' for 'xcode-select'"
echo ""
echo "You need to click Install. This installation should begin when that finishes."
echo "(if that box doesn't pop up in a second or two, something went wrong)"
echo "(note that it may pop up underneath this window, so check for it in the dock too)"
echo ""
xcode-select --install 2>/dev/null
while true; do
sleep 5
if [ -n "$(git --version 2>/dev/null)" ] && [ -n "$(xcode-select --print-path 2>/dev/null)" ]; then
break;
fi
done
echo "It looks like the other install is finishing up."
echo "This installation will begin in one minute."
sleep 60
else
echo "XCode Command Line Tools already installed"
fi
# homebrew
if [ -z "$(which brew | grep brew)" ]; then
echo "installing brew (homebrew)..."
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew doctor
else
echo "updating brew..."
brew update >/dev/null 2>/dev/null
fi
if [ -z "$(which wget | grep wget)" ]; then
echo "installing wget..."
brew install wget
else
echo "wget already installed"
fi
# http://www.fail2ban.org/wiki/index.php/HOWTO_Mac_OS_X_Server_(10.5)
if [ -z "$(which fail2ban-server | grep fail2ban)" ]; then
if [ -z "${NO_FAIL2BAN}" ]; then
brew install fail2ban
sudo cp -fv /usr/local/opt/fail2ban/*.plist /Library/LaunchDaemons
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.fail2ban.plist
fi
fi
if [ -z "$(which pkg-config | grep pkg-config)" ]; then
echo "installing pkg-config..."
brew install pkg-config
else
echo "pkg-config already installed"
fi

26
setup-deps-ubuntu.bash Normal file
View File

@ -0,0 +1,26 @@
#!/bin/bash
# curl -fsSL https://ldsconnect.org/setup-linux.bash | bash -c
NO_FAIL2BAN=${1}
echo ""
echo ""
echo "updating apt-get..."
sudo bash -c "apt-get update -qq -y < /dev/null" > /dev/null
# fail2ban
if [ -z "$(which fail2ban-server | grep fail2ban)" ]; then
if [ -z "${NO_FAIL2BAN}" ]; then
echo "installing fail2ban..."
sudo bash -c "apt-get install -qq -y fail2ban < /dev/null" > /dev/null
fi
fi
# git, wget, curl, build-essential
if [ -z "$(which pkg-config | grep pkg-config)" ] || [ -z "$(which git | grep git)" ] || [ -z "$(which wget | grep wget)" ] || [ -z "$(which curl | grep curl)" ] || [ -z "$(which gcc | grep gcc)" ] || [ -z "$(which rsync | grep rsync)" ]
then
echo "installing git, wget, curl, build-essential, rsync, pkg-config..."
sudo bash -c "apt-get install -qq -y git wget curl build-essential rsync pkg-config < /dev/null" > /dev/null 2>/dev/null
fi

10
setup-iojs-mavericks.bash Normal file
View File

@ -0,0 +1,10 @@
IOJS_VER=${1}
if [ -n "${IOJS_VER}" ]; then
echo "installing io.js as iojs ${IOJS_VER}..."
curl -fsSL "http://iojs.org/dist/${IOJS_VER}/iojs-${IOJS_VER}.pkg" -o "/tmp/iojs-${IOJS_VER}.pkg"
sudo /usr/sbin/installer -pkg "/tmp/iojs-${IOJS_VER}.pkg" -target /
sudo chown -R $(whoami) /usr/local 2>/dev/null
fi

20
setup-iojs-ubuntu.bash Normal file
View File

@ -0,0 +1,20 @@
IOJS_VER=${1}
if [ -n "$(arch | grep 64)" ]; then
ARCH="x64"
else
ARCH="x86"
fi
if [ -n "${IOJS_VER}" ]; then
echo "installing io.js as iojs ${IOJS_VER}..."
curl -fsSL "http://iojs.org/dist/${IOJS_VER}/iojs-${IOJS_VER}-linux-${ARCH}.tar.gz" \
-o "/tmp/iojs-${IOJS_VER}-linux-${ARCH}.tar.gz"
pushd /tmp
tar xf /tmp/iojs-${IOJS_VER}-linux-${ARCH}.tar.gz
rm iojs-${IOJS_VER}-linux-x64/{LICENSE,CHANGELOG.md,README.md}
sudo rsync -a "/tmp/iojs-${IOJS_VER}-linux-${ARCH}/" /usr/local/
sudo chown -R $(whoami) /usr/local
fi

View File

@ -1,134 +0,0 @@
#!/bin/bash
# curl -fsSL https://ldsconnect.org/setup-osx.bash | bash -c
IOJS_VER=${1}
echo ""
echo ""
# XCode
# testing for which git, gcc, etc will not work because the tools are aliased to the install script
if [ -z "$(xcode-select --print-path 2>/dev/null)" ] || [ -z "$(git --version 2>/dev/null)" ]; then
echo "Hey You!!!"
echo ""
echo "A thingy is going to pop up and ask you to install 'command line developer tools' for 'xcode-select'"
echo ""
echo "You need to click Install. This installation should begin when that finishes."
echo "(if that box doesn't pop up in a second or two, something went wrong)"
echo "(note that it may pop up underneath this window, so check for it in the dock too)"
echo ""
xcode-select --install 2>/dev/null
while true; do
sleep 5
if [ -n "$(git --version 2>/dev/null)" ] && [ -n "$(xcode-select --print-path 2>/dev/null)" ]; then
break;
fi
done
echo "It looks like the other install is finishing up."
echo "This installation will begin in one minute."
sleep 60
else
echo "XCode Command Line Tools already installed"
fi
# homebrew
if [ -z "$(which brew | grep brew)" ]; then
echo "installing brew (homebrew)..."
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew doctor
else
echo "updating brew..."
brew update >/dev/null 2>/dev/null
fi
if [ -z "$(which wget | grep wget)" ]; then
echo "installing wget..."
brew install wget
else
echo "wget already installed"
fi
# http://www.fail2ban.org/wiki/index.php/HOWTO_Mac_OS_X_Server_(10.5)
if [ -z "$(which fail2ban-server | grep fail2ban)" ]; then
clear
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 obviosly 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
clear
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
else
echo "Phew, dodged the bullet on that one... Installing fail2ban.. :-)"
brew install fail2ban
sudo cp -fv /usr/local/opt/fail2ban/*.plist /Library/LaunchDaemons
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.fail2ban.plist
fi
else
brew install fail2ban
sudo cp -fv /usr/local/opt/fail2ban/*.plist /Library/LaunchDaemons
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.fail2ban.plist
fi
fi
if [ -z "$(which pkg-config | grep pkg-config)" ]; then
echo "installing pkg-config..."
brew install pkg-config
else
echo "pkg-config already installed"
fi
# iojs
if [ -n "$(which node | grep node 2>/dev/null)" ]; then
IOJS_VER=""
if [ "$(node -v 2>/dev/null)" != "$(iojs -v 2>/dev/null)" ]; then
echo "You have node.js installed. Backing up $(which node) as $(which node).joyent"
echo "(you can move it back after the install if you want separate node.js and io.js installations)"
echo ""
echo sudo mv "$(which node)" "$(which node).joyent"
sudo mv "$(which node)" "$(which node).joyent"
fi
if [ "${IOJS_VER}" == "$(iojs -v 2>/dev/null)" ]; then
echo iojs ${IOJS_VER} already installed
else
clear
echo ""
echo "HEY, LISTEN:"
echo "io.js is already installed as iojs $(iojs -v | grep v)"
echo ""
echo "to reinstall please first run: rm $(which iojs)"
echo ""
fi
fi
if [ -n "${IOJS_VER}" ]; then
echo "installing io.js as iojs ${IOJS_VER}..."
curl -fsSL "http://iojs.org/dist/${IOJS_VER}/iojs-${IOJS_VER}.pkg" -o "/tmp/iojs-${IOJS_VER}.pkg"
sudo /usr/sbin/installer -pkg "/tmp/iojs-${IOJS_VER}.pkg" -target /
sudo chown -R $(whoami) /usr/local 2>/dev/null
fi

View File

@ -1,74 +0,0 @@
#!/bin/bash
# curl -fsSL https://ldsconnect.org/setup-linux.bash | bash -c
IOJS_VER=${1}
echo ""
echo ""
echo "updating apt-get..."
sudo bash -c "apt-get update -qq -y < /dev/null" > /dev/null
# fail2ban
if [ -z "$(which fail2ban-server | grep fail2ban)" ]; then
echo "installing fail2ban..."
sudo bash -c "apt-get install -qq -y fail2ban < /dev/null" > /dev/null
fi
# git, wget, curl, build-essential
if [ -z "$(which pkg-config | grep pkg-config)" ] || [ -z "$(which git | grep git)" ] || [ -z "$(which wget | grep wget)" ] || [ -z "$(which curl | grep curl)" ] || [ -z "$(which gcc | grep gcc)" ] || [ -z "$(which rsync | grep rsync)" ]
then
echo "installing git, wget, curl, build-essential, rsync, pkg-config..."
sudo bash -c "apt-get install -qq -y git wget curl build-essential rsync pkg-config < /dev/null" > /dev/null 2>/dev/null
fi
#
# iojs
#
if [ -n "$(which iojs | grep iojs 2>/dev/null)" ]; then
# iojs of some version is already installed
if [ "${IOJS_VER}" == "$(iojs -v 2>/dev/null)" ]; then
echo iojs ${IOJS_VER} already installed
IOJS_VER=""
else
echo "HEY, LISTEN:"
echo ""
echo "io.js is already installed as iojs $(iojs -v | grep v)"
echo ""
echo "to reinstall please first run: rm $(which iojs)"
echo ""
fi
elif [ "$(node -v 2>/dev/null)" != "$(iojs -v 2>/dev/null)" ]; then
# node of some version is already installed
echo ""
echo "################################################################################"
echo ""
echo "HEY, LISTEN!"
echo ""
echo "You have node.js installed."
echo "Backing up $(which node) as $(which node).$(node -v)"
echo "(copy it back after the install if to maintain node.js and io.js separately)"
echo ""
echo sudo mv "$(which node)" "$(which node).$(node -v)"
sleep 3
sudo mv "$(which node)" "$(which node).$(node -v)"
echo "################################################################################"
echo ""
fi
if [ -n "${IOJS_VER}" ]; then
if [ -n "$(arch | grep 64)" ]; then
ARCH="x64"
else
ARCH="x86"
fi
echo "installing io.js as iojs ${IOJS_VER}..."
curl -fsSL "http://iojs.org/dist/${IOJS_VER}/iojs-${IOJS_VER}-linux-${ARCH}.tar.gz" \
-o "/tmp/iojs-${IOJS_VER}-linux-${ARCH}.tar.gz"
pushd /tmp
tar xf /tmp/iojs-${IOJS_VER}-linux-${ARCH}.tar.gz
rm iojs-${IOJS_VER}-linux-x64/{LICENSE,CHANGELOG.md,README.md}
sudo rsync -a "/tmp/iojs-${IOJS_VER}-linux-${ARCH}/" /usr/local/
sudo chown -R $(whoami) /usr/local
fi

View File

@ -10,24 +10,19 @@
# wget -nv https://example.com/setup.bash -O - | bash # wget -nv https://example.com/setup.bash -O - | bash
BASE_URL="https://raw.githubusercontent.com/coolaj86/iojs-install-script/master" BASE_URL="https://raw.githubusercontent.com/coolaj86/iojs-install-script/master"
NO_FAIL2BAN=""
if [ -n "$(which iojs 2>/dev/null || false)" ]; then
echo ""
echo "HEY, LISTEN:"
echo "io.js is already install as iojs $(iojs -v | grep v)"
echo ""
echo "to reinstall please first run: rm $(which iojs)"
echo ""
fi
if [ -f "/tmp/IOJS_VER" ]; then
IOJS_VER=$(cat /tmp/IOJS_VER | grep v)
fi
if [ -z "$IOJS_VER" ]; then
IOJS_VER="v1.0.1"
fi
OS="unsupported" OS="unsupported"
ARCH="" ARCH=""
IOJS_VER=""
SETUP_FILE=""
clear
#########################
# Which OS and version? #
#########################
if [ "$(uname | grep -i 'Darwin')" ]; then if [ "$(uname | grep -i 'Darwin')" ]; then
OSX_VER="$(sw_vers | grep ProductVersion | cut -d':' -f2 | cut -f2)" OSX_VER="$(sw_vers | grep ProductVersion | cut -d':' -f2 | cut -f2)"
@ -81,9 +76,7 @@ if [ "$(uname | grep -i 'Darwin')" ]; then
else else
ARCH="32" ARCH="32"
fi fi
elif [ "$(uname | grep -i 'Linux')" ]; then elif [ "$(uname | grep -i 'Linux')" ]; then
if [ ! -f "/etc/issue" ]; then if [ ! -f "/etc/issue" ]; then
echo "unsupported linux os" echo "unsupported linux os"
exit 1 exit 1
@ -100,40 +93,37 @@ elif [ "$(uname | grep -i 'Linux')" ]; then
elif [ "$(cat /etc/issue | grep -i 'Fedora')" ]; then elif [ "$(cat /etc/issue | grep -i 'Fedora')" ]; then
OS='fedora' OS='fedora'
fi fi
else else
echo "unsupported unknown os (non-mac, non-linux)" echo "unsupported unknown os (non-mac, non-linux)"
exit 1 exit 1
fi fi
case "${OS}" in case "${OS}" in
fedora) fedora)
echo "sudo yum" echo "FEDORA not yet supported (feel free to pull request)"
echo "wget --quiet ${BASE_URL}/setup-fedora.bash -O /tmp/install-iojs.bash || echo 'error downloading os setup script'" exit 1
;; ;;
ubuntu) ubuntu)
wget --quiet "${BASE_URL}/setup-ubuntu.bash" -O /tmp/install-iojs.bash || echo 'error downloading os setup script' SETUP_FILE="ubuntu"
;; ;;
yosemite) yosemite)
# mavericks # mavericks
curl --silent "${BASE_URL}/setup-mavericks.bash" -o /tmp/install-iojs.bash || echo 'error downloading os setup script' SETUP_FILE="mavericks"
;; ;;
mavericks) mavericks)
curl --silent "${BASE_URL}/setup-mavericks.bash" -o /tmp/install-iojs.bash || echo 'error downloading os setup script' SETUP_FILE="mavericks"
;; ;;
mountain) mountain)
echo "wget cltools" echo "Mountain Lion not yet supported (feel free to pull request)"
echo "curl --silent ${BASE_URL}/setup-mountain.bash -o /tmp/install-iojs.bash || echo 'error downloading os setup script'" exit 1
;; ;;
lion) lion)
echo "wget cltools" echo "Lion not yet supported (feel free to pull request)"
echo "curl --silent ${BASE_URL}/setup-lion.bash -o /tmp/install-iojs.bash || echo 'error downloading os setup script'" exit 1
;; ;;
snow) snow)
echo "wget gcc-0.6.pkg" echo "Snow Leopard not yet supported (feel free to pull request)"
echo "curl --silent ${BASE_URL}/setup-snow.bash -o /tmp/install-iojs.bash || echo 'error downloading os setup script'" exit 1
;; ;;
*) *)
echo "unsupported unknown os ${OS}" echo "unsupported unknown os ${OS}"
@ -141,8 +131,132 @@ case "${OS}" in
;; ;;
esac esac
#######################
# Download installers #
#######################
echo "${OS}" "${ARCH}" echo "${OS}" "${ARCH}"
bash /tmp/install-iojs.bash "${IOJS_VER}"
if [ -n "$(which curl)" ]; then
curl --silent "${BASE_URL}/setup-deps-${SETUP_FILE}.bash" \
-o /tmp/install-iojs-deps.bash || echo 'error downloading os setup script'
curl --silent "${BASE_URL}/setup-iojs-${SETUP_FILE}.bash" \
-o /tmp/install-iojs.bash || echo 'error downloading os setup script'
elif [ -n "$(which wget)" ]; then
wget --quiet "${BASE_URL}/setup-deps-${SETUP_FILE}.bash" \
-O /tmp/install-iojs-deps.bash || echo 'error downloading os setup script'
wget --quiet "${BASE_URL}/setup-iojs-${SETUP_FILE}.bash" \
-O /tmp/install-iojs.bash || echo 'error downloading os setup script'
else
echo "Found neither 'curl' nor 'wget'. Can't Continue."
exit 1
fi
################
# 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 obviosly 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-iojs-deps.bash "${NO_FAIL2BAN}"
#########################
# Which io.js VERSION ? #
#########################
if [ -f "/tmp/IOJS_VER" ]; then
IOJS_VER=$(cat /tmp/IOJS_VER | grep v)
fi
if [ -z "$IOJS_VER" ]; then
IOJS_VER="v1.0.1"
fi
if [ -n "$(which iojs 2>/dev/null || false)" ]; then
echo ""
echo "HEY, LISTEN:"
echo "io.js is already install as iojs $(iojs -v | grep v)"
echo ""
echo "to reinstall please first run:"
echo "sudo mv '$(which iojs)' '$(which iojs).$(iojs -v)'"
echo ""
fi
#
# iojs
#
if [ -n "$(which iojs | grep iojs 2>/dev/null)" ]; then
# iojs of some version is already installed
if [ "${IOJS_VER}" == "$(iojs -v 2>/dev/null)" ]; then
echo iojs ${IOJS_VER} already installed
else
echo "HEY, LISTEN:"
echo ""
echo "io.js is already installed as iojs $(iojs -v | grep v)"
echo ""
echo "to reinstall please first run: rm $(which iojs)"
echo ""
fi
IOJS_VER=""
elif [ "$(node -v 2>/dev/null)" != "$(iojs -v 2>/dev/null)" ]; then
# node of some version is already installed
echo ""
echo "################################################################################"
echo ""
echo "HEY, LISTEN!"
echo ""
echo "You have node.js installed."
echo "Backing up $(which node) as $(which node).$(node -v)"
echo "(copy it back after the install if to maintain node.js and io.js separately)"
echo ""
echo sudo mv "$(which node)" "$(which node).$(node -v)"
sleep 3
sudo mv "$(which node)" "$(which node).$(node -v)"
echo "################################################################################"
echo ""
fi
if [ -n "${IOJS_VER}" ]; then
bash /tmp/install-iojs.bash "${IOJS_VER}"
fi
# jshint # jshint
if [ -z "$(which jshint | grep jshint)" ]; then if [ -z "$(which jshint | grep jshint)" ]; then