Compare commits

...

87 Commits

Author SHA1 Message Date
AJ ONeal a431978582 docs: fix typo 2022-08-19 19:05:47 +00:00
AJ ONeal 6c3fa218ba docs: update deprecation notice 2022-08-19 19:05:19 +00:00
AJ ONeal 79d4d239ad bugfix: don't block macOS 11+ 2021-09-08 03:20:15 +00:00
AJ ONeal 60f206373c Update 'install.sh' 2021-09-04 21:14:30 +00:00
AJ ONeal 22c741817c point to webinstall.dev 2020-04-28 02:32:35 +00:00
AJ ONeal 1f3a195fe9 update link 2019-04-09 03:48:40 +00:00
AJ ONeal c3890ca8a9 silence stupid errors 2019-04-04 06:07:54 +00:00
AJ ONeal 689fa58531 silence unimportant errors 2019-04-04 06:05:25 +00:00
AJ ONeal 895dcd31f2 NODE_VERSION taks preference over NODEJS_VER 2018-09-14 06:49:59 +00:00
AJ ONeal b8acbae85f fix unbound var 2018-09-14 06:46:56 +00:00
AJ ONeal 509ee32688 remove trailing / 2018-09-10 08:21:38 +00:00
AJ ONeal 3109f4bb94 syntax highlighting 2018-09-10 08:20:38 +00:00
AJ ONeal 05199bcf82 refactor the docs 2018-09-10 08:19:11 +00:00
AJ ONeal 1387929dfc NODEJS_VER => NODE_VERSION 2018-09-10 07:45:08 +00:00
AJ ONeal c15264b763 Update 'README.md' 2018-09-10 07:40:50 +00:00
AJ ONeal 8be0a29b7d remove tmpdir on success 2018-07-26 22:10:46 +00:00
AJ ONeal 972d510f59 better tmpdir 2018-07-26 22:08:15 +00:00
AJ ONeal 92ec7ad5b6 use better tmp dir 2018-07-26 22:07:02 +00:00
AJ ONeal 95c0caf4be cleanup 2018-07-26 22:02:16 +00:00
AJ ONeal ed24276356 bugfix for Arch Linux sans rsync 2018-07-26 22:00:40 +00:00
AJ ONeal dddf31db8d do copy links with rsync 2018-07-26 21:48:34 +00:00
AJ ONeal a1af3328cb copy -Hr as best approximation for rsync -Kr 2018-07-26 21:47:05 +00:00
AJ ONeal 515bdce8c2 rsync with -Kr instead of -a to not break symlinks in /usr/local 2018-07-26 21:41:42 +00:00
AJ ONeal 4ea01c4c42 don't include * in quotes 2018-07-26 20:51:20 +00:00
AJ ONeal 45adb12ae1 cp has slightly different symmantecs 2018-07-26 20:49:40 +00:00
AJ ONeal 0d6e15ee62 don't rely on rsync 2018-07-26 20:48:00 +00:00
AJ ONeal 8a14fc8ede assume no dev tools by default 2018-07-26 20:38:51 +00:00
AJ ONeal 2309008c5f failsafe exit if node is installed 2018-06-27 10:20:10 +00:00
AJ ONeal f2a8c2fc49 allow ANDROID_ROOT to be undefined 2018-06-26 05:54:06 +00:00
AJ ONeal b562d6dd3b merge 2018-06-23 16:31:37 -06:00
AJ ONeal bad41027ad only sudo as fallback, use mktemp -d 2018-06-23 16:29:13 -06:00
AJ ONeal 5f231f9d22 set ANDROID_ROOT empty 2018-06-23 05:16:13 +00:00
AJ ONeal 0171162f20 typo fix 2018-06-20 02:11:24 +00:00
AJ ONeal 3ced314799 fix comparison 2018-06-20 02:07:43 +00:00
AJ ONeal 00c986e483 regression fix: allow empty NODEJS_VER 2018-06-20 02:06:38 +00:00
AJ ONeal 97c7ef9793 make sure directory exists before chowning it 2018-06-18 21:40:42 +00:00
AJ ONeal c747edb99a update installer examples 2018-06-14 21:10:05 +00:00
AJ ONeal 62bc523d03 fix #1 typo / misspelling of PREFIX
PREFIX not PREFIIX as per #1
2018-06-05 07:36:21 +00:00
AJ ONeal 82e6ace060 make docs more readable 2018-05-24 21:34:44 +00:00
AJ ONeal 748c51a687 show selecting version in docs 2018-05-24 21:31:04 +00:00
AJ ONeal 0c7d0a7da6 note desired version number when already installed 2018-05-24 21:13:55 +00:00
AJ ONeal be9344dbea match literal '.' for version, not wildcard 2018-05-24 21:12:37 +00:00
AJ ONeal 2d628014d0 tail typo fix 2018-05-24 21:09:02 +00:00
AJ ONeal 17c0b01ee0 unset far typo fix 2018-05-24 21:08:12 +00:00
AJ ONeal e436cdb64d allow use of partial version number i.e. v10 or v10.2 2018-05-24 21:07:04 +00:00
AJ ONeal a443dd04d3 fix for unbound var 2018-05-12 14:37:54 -06:00
AJ ONeal 5af26c6c86 Merge branch 'master' into v1.1 2018-05-12 13:53:53 -06:00
AJ ONeal a9e1370b58 don't reset NODEJS_VER to empty string 2018-05-12 13:53:46 -06:00
AJ ONeal 1edc07515f Merge branch 'master' of ssh://git.coolaj86.com:22042/coolaj86/node-installer.sh 2018-05-12 13:48:13 -06:00
AJ ONeal 1a7d21b850 prefix links with https 2018-05-12 19:46:57 +00:00
AJ ONeal 7809937d74 use env var for NODEJS_VER, update version 2018-05-12 13:45:15 -06:00
AJ ONeal 3adefcc4a8 update 2018-03-20 19:56:45 -06:00
AJ ONeal ae2511f592 update 2018-03-20 19:56:09 -06:00
AJ ONeal 08002c572a fix argument passing 2017-12-08 22:00:46 +00:00
AJ ONeal 3e7745177f Merge branch 'master' of ssh://git.coolaj86.com:22042/coolaj86/node-installer.sh 2017-11-07 04:46:22 -07:00
AJ ONeal 5d39eef143 less verbose output 2017-11-07 04:45:52 -07:00
AJ ONeal 90cdb8f93e Merge branch 'v1' 2017-11-06 13:21:19 -07:00
AJ ONeal ccb1487b36 merged old and new 2017-11-06 13:20:05 -07:00
AJ ONeal e57069fe50 rename for merge 2017-11-06 13:17:09 -07:00
AJ ONeal e9c21e3063 Merge branch 'master' of ssh://git.coolaj86.com:22042/coolaj86/node-installer.sh 2017-11-03 15:21:35 -06:00
AJ ONeal 216aa9b420 more helpful path output 2017-11-03 15:21:25 -06:00
AJ ONeal d3069471e7 Options 2017-11-03 21:16:35 +00:00
AJ ONeal 65ad946056 document install location env variable 2017-11-03 15:11:57 -06:00
AJ ONeal b0b829fd91 update urls 2017-11-03 14:51:47 -06:00
AJ ONeal bacd1a4537 rename setup.bash -> install.sh 2017-11-03 14:32:42 -06:00
AJ ONeal 963f551a98 update urls 2017-11-03 14:31:34 -06:00
AJ ONeal 32839e69ba add -L to curl to follow redirects 2017-11-02 04:20:56 +00:00
AJ ONeal 4090196e84 add -L to curl 2017-11-02 04:19:58 +00:00
AJ ONeal 2adfec1fd6 Update 'README.md' 2017-10-29 03:41:44 +00:00
richdex14 aed892007f Clean up debugging from copying paths issue. 2017-09-04 14:35:23 -06:00
richdex14 6252737cc1 Update setup-deps-ubuntu.bash to use portable `sudo_cmd` syntax 2017-09-04 13:35:16 -06:00
richdex14 2f9f3c0c82 Update setup-node-ubuntu.bash to use portable `$sudo_cmd` syntax 2017-09-04 12:20:00 -06:00
richdex14 a24f92df98 Update setup.bash to use portable `$sudo_cmd` syntax 2017-09-04 12:18:57 -06:00
richdex14 351056f9bc Update setup-node-ubuntu.bash 2017-09-04 11:39:30 -06:00
richdex14 28c1ad8484 Debugging copying issues 2017-09-04 11:35:52 -06:00
richdex14 ae331149f7 Debugging file copy issues on daplie board. 2017-09-04 11:28:57 -06:00
richdex14 16a6d7e18c Debugging installer script issues on daplie board. 2017-09-04 11:11:18 -06:00
richdex14 6c0afe6488 Update setup-node-ubuntu.bash to use portable copy method as opposed to non-portable `tar --strip-components` in unpacking step. 2017-09-03 21:13:47 -06:00
richdex14 31b92cdadb Update setup-node-ubuntu.bash to replace `arch` call with portable call to `uname -a` 2017-09-03 20:47:40 -06:00
richdex14 561a2e2fa1 Correcting copy-paste mistake in `setup-node-ubuntu.bash`. Restoring version from coolaj86 repo. 2017-09-03 20:46:44 -06:00
richdex14 8a5593363d Update setup.bash to work with portable `head` command. 2017-09-02 12:05:22 -06:00
richdex14 69bc78680d Update setup.bash to use Daplie repo instead of coolaj86 repo. 2017-09-02 11:56:17 -06:00
richdex14 8a3f4ba77f Update setup.bash to work on Marvell arm64 OS 2017-09-02 11:45:28 -06:00
richdex14 a99583fb1d Update setup-min.sh to use Daplie repo instead of coolaj86 private repo. 2017-09-01 20:54:43 -06:00
richdex14 0948a728c3 Update setup-node-ubuntu.bash to use portable `head -n` syntax. 2017-09-01 20:45:22 -06:00
richdex14 fb0a8f6372 Update setup-node-ubuntu.bash to change to Daplie project from coolaj86 private project. 2017-09-01 20:16:12 -06:00
richdex14 de522df09b 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` 2017-09-01 20:09:55 -06:00
7 changed files with 556 additions and 382 deletions

131
README.md
View File

@ -1,43 +1,105 @@
# STOP
The install method in this repo still has its place, but this is no longer maintained.
**Update**: Use [Webi](https://webinstall.dev) instead:
```sh
curl https://webinstall.dev/node | bash
```
# Easy Install node.js
Automated node.js installers for OS X and Ubuntu
| A [Root](https://rootprojects.org) Project |
**node.js only** (no dev tools)
Simple node.js installer for macOS and Linux
## QuickStart
```bash
# install node.js without development dependencies
curl -fsSL bit.ly/install-min-node | bash
# using wget instead of curl (Ubuntu)
wget -nv bit.ly/install-min-node -O - | bash
curl -fsL bit.ly/node-installer | bash
```
**node.js + dev tools**
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
```
<!-- bit.ly/easy-install-node -->
*Note*: [bit.ly/node-installer](https://bit.ly/node-installer) is a redirect to <https://git.coolaj86.com/coolaj86/node-installer.sh/raw/master/install.sh>
## Screencast
[How to Setup a VPS for node.js Development](https://www.youtube.com/watch?v=ypjzi1axH2A) - [(3:06 installing node.js](https://www.youtube.com/watch?v=ypjzi1axH2A#t=186))
## Choosing a specific version
## Installer Options
* [x] version
* [x] install location
* [x] tools for building native modules
### Choose Version
The latest version of node is installed by default.
You can choose a specific version by defining `NODE_VERSION` in the format `vX`, `vX.Y`, or `v.X.Y.Z`:
```bash
echo "Current node.js version is $(curl -fsSL https://nodejs.org/dist/index.tab | head -2 | tail -1 | cut -f 1)"
NODE_VERSION=v10
```
Usage:
```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
export NODE_VERSION=v10.10
curl -fsSL https://bit.ly/node-installer | bash
```
### Location
By default node will be installed to `/usr/local`, without root if possible.
You can choose a specific location by setting **both** `NPM_CONFIG_PREFIX` **and** `NODE_PATH`:
```bash
export NPM_CONFIG_PREFIX=$HOME/.local
export NODE_PATH=$NPM_CONFIG_PREFIX/lib/node_modules
curl -fsSL https://bit.ly/node-installer | bash
```
If you want to add the install location to your `PATH`, add `/bin` to the custom location used above and append it like so:
```bash
PATH=$PATH:$HOME/.local/bin
```
### Development Tools
If you plan on building or creating native node modules, you'll want to install `gcc`, `pgk-config`, and a few other required tools and niceties.
In fact, it's fairly common for modules to have both native module and pure js dependencies, so you'll probably want (or need) to install these even if you don't plan to use them directly.
* [x] curl & wget
* [x] git
* [x] rsync
* [x] xcode, brew (on macOS), build-essential (Linux)
* [x] gcc, pkg-config
* [x] pkg-config
* [x] node.js, jshint
Pass `--dev-deps` to the installer script and it will use either `brew` (on macOS) or `apt` (on Linux) to install the development tools.
```bash
curl -fsSL https://bit.ly/node-installer | bash -s -- --dev-deps
```
Or, if you don't have `curl` installed yet you can use `wget`:
```bash
wget -nv https://bit.ly/node-installer -O - | bash -s -- --dev-deps
```
### Securing your server
If you're running a node.js server on anything with a public ip address
(an "edge" server), I'd highly recommend that you also install `fail2ban` to secure ssh -
especially if you haven't switched your server to use key-only authentication (which you should also do).
See [The 15-Minute Guide to Secure VPS Access (for the Semi-Paranoid)](https://www.youtube.com/watch?v=YZzhIIJmlE0)
## Notes
* [OS X](#apple-os-x)
@ -65,7 +127,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 https://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,21 +135,20 @@ 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 https://bit.ly/node-installer -O /tmp/node-installer.sh; bash /tmp/node-installer.sh --dev-deps
```
### Other things you should know
### Automatic Version Detection
This is what gets installed:
Fun FYI, here's how the latest version is determined:
* rsync
* curl
* wget
* git
* xcode / brew / build-essential / pkg-config / gcc
* node (including npm)
* jshint
```bash
NODE_VERSION=$(curl -fsSL https://nodejs.org/dist/index.tab | tail -n +2 | cut -f 1 | head -1 )
echo "The current node.js version is $NODE_VERSION"
```
**NOTE**: If you're running a node.js server on an edge server,
I'd highly recommend that you also install `fail2ban` to secure ssh -
especially if you haven't switched your server to use key-only authentication.
```bash
BASE_VER="v10\\."
NODE_VERSION=$(curl -fsSL https://nodejs.org/dist/index.tab | tail -n +2 | cut -f 1 | grep $BASE_VER | head -1 )
echo "Latest node.js $BASE_VER is $NODE_VERSION"
```

387
install.sh Normal file
View File

@ -0,0 +1,387 @@
#!/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=""
SETUP_FILE=""
my_tmp="$(mktemp -d -t node-installer.XXXXXXXX)"
export my_tmp
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
# Mavericks+ works for all current macOS versions
OS='mavericks'
if [[ "$OSX_MAJOR" -eq 10 ]]; then
#
# 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
fi
# OS X (10) and macOS (11) should be supported
if [ "$OSX_MAJOR" -gt 11 ]; then
echo "WARNING: macOS 12+ may or may not be supported"
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 'Arch ')" ]; 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='ubuntu'
elif [ "$(cat /etc/issue | grep -i 'Marvell')" ]; then
OS='marvell'
else
OS='ubuntu'
fi
else
echo "unsupported unknown os (non-mac, non-linux)"
exit 500
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 "$my_tmp/${INSTALL_FILE}" ]; then
if [ -n "$(type -p curl)" ]; then
curl --silent -L "${BASE_URL}/${INSTALL_FILE}" \
-o "$my_tmp/${INSTALL_FILE}" || echo 'error downloading os setup script'
elif [ -n "$(type -p wget)" ]; then
wget --quiet "${BASE_URL}/${INSTALL_FILE}" \
-O "$my_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 "$my_tmp/${INSTALL_DEPS_FILE}" ]; then
if [ -n "$(type -p curl)" ]; then
curl --silent -L "${BASE_URL}/${INSTALL_DEPS_FILE}" \
-o "$my_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 "$my_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 "$my_tmp/${INSTALL_FILE}" ]
then
echo "Error Downloading Install File"
exit 1
fi
if [ "--dev-deps" == "$deps_flag" ]; then
if [ ! -e "$my_tmp/${INSTALL_DEPS_FILE}" ]
then
echo "Error Downloading Deps File"
exit 1
fi
fi
#########################
# Which node.js VERSION ? #
#########################
NODE_VERSION=${NODE_VERSION:-}
NODEJS_VER=${NODEJS_VER:-}
if [ -n "$NODE_VERSION" ]; then
NODEJS_VER=$NODE_VERSION
fi
if [ -z "${NODEJS_VER:-}" ]; then
# For backwards compat
if [ -f "$my_tmp/NODEJS_VER" ]; then
NODEJS_VER=$(cat $my_tmp/NODEJS_VER | grep v)
elif [ -f "/tmp/IOJS_VER" ]; then
NODEJS_VER=$(cat $my_tmp/IOJS_VER | grep v)
fi
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
NODEJS_VER="${NODEJS_VER:-v}" # Search for 'v' at the least
# sort -rV # will sort by version number, but it appears these are already sorted
# tail -n +2 # starts at line two (1-indexed) and all after (omits the csv header with 'version' and such)
# cut -f 1 # gets only the first column
# head -n 1 # gets only the most recent version
my_char="."
my_count=$(awk -F"${my_char}" '{print NF-1}' <<< "${NODEJS_VER}")
# get the latest version if partial
if [ $my_count -ne 2 ]; then
if [ "$NODEJS_VER" != "v" ]; then
NODEJS_VER="$NODEJS_VER\\."
fi
if [ -n "$(type -p curl)" ]; then
NODEJS_VER=$(curl -fsL "$NODEJS_BASE_URL/dist/index.tab" | tail -n +2 | cut -f 1 | grep "^$NODEJS_VER" | head -n 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 - | tail -n +2 | cut -f 1 | grep "^$NODEJS_VER" | head -n 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
exit 0
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 as ${NODEJS_VER} please first run: rm $node_install_path/bin/node"
echo ""
exit 1
fi
NODEJS_VER=""
fi
if [ -n "${NODEJS_VER}" ]; then
bash "$my_tmp/${INSTALL_FILE}" "${NODEJS_VER}"
fi
mkdir -p $node_install_path/lib/node_modules 2> /dev/null || $sudo_cmd mkdir -p $node_install_path/lib/node_modules
chown -R $(whoami) $node_install_path/lib/node_modules 2> /dev/null || $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 "$my_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
rm -rf "$my_tmp"

View File

@ -2,6 +2,10 @@
# curl -fsSL https://ldsconnect.org/setup-linux.bash | bash -c
# Not every platform has or needs sudo, gotta save them O(1)s...
sudo_cmd=""
((EUID)) && [[ -z "$ANDROID_ROOT" ]] && sudo_cmd="sudo"
NO_FAIL2BAN=${1}
echo ""
@ -18,7 +22,7 @@ echo " * jshint"
echo ""
echo "updating apt-get..."
sudo bash -c "apt-get update -qq -y < /dev/null" > /dev/null
$sudo_cmd bash -c "apt-get update -qq -y < /dev/null" > /dev/null
# fail2ban
#if [ -z "$(which fail2ban-server | grep fail2ban)" ]; then
@ -32,5 +36,5 @@ sudo bash -c "apt-get update -qq -y < /dev/null" > /dev/null
if [ -z "$(type -p pkg-config)" ] || [ -z "$(type -p git)" ] || [ -z "$(type -p wget)" ] || [ -z "$(type -p curl)" ] || [ -z "$(type -p gcc)" ] || [ -z "$(type -p rsync)" ] || [ -z "$(type -p python)" ]
then
echo "installing git, wget, curl, build-essential, rsync, pkg-config, python..."
sudo bash -c "apt-get install -qq -y git wget curl build-essential rsync pkg-config python < /dev/null" > /dev/null 2>/dev/null
$sudo_cmd bash -c "apt-get install -qq -y git wget curl build-essential rsync pkg-config python < /dev/null" > /dev/null 2>/dev/null
fi

View File

@ -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/coolaj86/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}" \

View File

@ -4,6 +4,9 @@ set -e
set -u
set -o pipefail
if [ -z "${my_tmp-}" ]; then
my_tmp=$(mkdir -p)
fi
if [ -z "${PREFIX-}" ]; then
PREFIX=""
fi
@ -33,23 +36,25 @@ fi
#NODEJS_PKG="/tmp/${NODEJS_NAME}-${NODEJS_VER}.pkg"
NODEJS_REMOTE="$NODEJS_BASE_URL/dist/${NODEJS_VER}/${NODEJS_NAME}-${NODEJS_VER}-darwin-x64.tar.gz"
NODEJS_PKG="/tmp/${NODEJS_NAME}-${NODEJS_VER}-darwin-x64.tar.gz"
NODEJS_UNTAR="/tmp/${NODEJS_NAME}-${NODEJS_VER}-darwin-x64"
NODEJS_PKG="$my_tmp/${NODEJS_NAME}-${NODEJS_VER}-darwin-x64.tar.gz"
NODEJS_UNTAR="$my_tmp/${NODEJS_NAME}-${NODEJS_VER}-darwin-x64"
if [ -n "${NODEJS_VER}" ]; then
echo "installing ${NODEJS_NAME} as ${NODEJS_NAME} ${NODEJS_VER}..."
curl -fsSL "${NODEJS_REMOTE}" -o "${NODEJS_PKG}"
# When using .pkg
#sudo /usr/sbin/installer -pkg "${NODEJS_PKG}" -target /
# When using .tar.gz
mkdir -p ${NODEJS_UNTAR}/
tar xf "${NODEJS_PKG}" -C "${NODEJS_UNTAR}/" --strip-components=1
rm -f ${NODEJS_UNTAR}/{LICENSE,CHANGELOG.md,README.md}
sudo rsync -a "${NODEJS_UNTAR}/" "$node_install_path/"
sudo chown -R $(whoami) "$node_install_path/lib/node_modules/"
sudo chown $(whoami) "$node_install_path/bin/"
mkdir -p "$node_install_path/" || sudo mkdir -p "$node_install_path/"
rsync -a "${NODEJS_UNTAR}/" "$node_install_path/" || sudo rsync -a "${NODEJS_UNTAR}/" "$node_install_path/"
chown -R $(whoami) "$node_install_path/lib/node_modules/" || sudo chown -R $(whoami) "$node_install_path/lib/node_modules/"
chown $(whoami) "$node_install_path/bin/" || sudo chown $(whoami) "$node_install_path/bin/"
fi

View File

@ -1,9 +1,16 @@
#!/bin/bash
# Not every platform has or needs sudo, gotta save them O(1)s...
sudo_cmd=""
((EUID)) && [[ -z "${ANDROID_ROOT:-}" ]] && sudo_cmd="sudo"
set -e
set -u
set -o pipefail
if [ -z "${my_tmp-}" ]; then
my_tmp="$(mktemp -d -t node-installer.XXXXXXXX)"
fi
if [ -z "${PREFIX-}" ]; then
PREFIX=""
fi
@ -27,43 +34,54 @@ then
NODEJS_NAME="iojs"
fi
if [ -n "$(arch | grep aarch64)" ]; then
if [ -n "$(uname -a | grep aarch64)" ]; then
ARCH="arm64"
elif [ -n "$(arch | grep 64)" ]; then
elif [ -n "$(uname -a | grep 64)" ]; then
ARCH="x64"
elif [ -n "$(arch | grep armv8l)" ]; then
elif [ -n "$(uname -a | grep armv8l)" ]; then
ARCH="arm64"
elif [ -n "$(arch | grep armv7l)" ]; then
elif [ -n "$(uname -a | grep armv7l)" ]; then
ARCH="armv7l"
elif [ -n "$(arch | grep armv6l)" ]; then
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}"
NODEJS_LOCAL="$my_tmp/${NODEJS_NAME}-${NODEJS_VER}-linux-${ARCH}.tar.gz"
NODEJS_UNTAR="$my_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
if [ -n "$(command -v curl 2>/dev/null | grep curl)" ]; then
curl -fsSL ${NODEJS_REMOTE} -o ${NODEJS_LOCAL} || echo 'error downloading ${NODEJS_NAME}'
elif [ -n "$(which wget 2>/dev/null)" ]; then
elif [ -n "$(command -v wget 2>/dev/null | grep wget)" ]; 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"
echo " sudo apt-get install --yes curl wget"
exit 1
fi
mkdir -p ${NODEJS_UNTAR}/
tar xf ${NODEJS_LOCAL} -C ${NODEJS_UNTAR}/ --strip-components=1
# --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}
sudo rsync -a "${NODEJS_UNTAR}/" "$node_install_path/"
if [ -n "$(command -v rsync 2>/dev/null | grep rsync)" ]; then
echo $sudo_cmd rsync -Krl "${NODEJS_UNTAR}/" "$node_install_path/"
rsync -Krl "${NODEJS_UNTAR}/" "$node_install_path/" 2>/dev/null || $sudo_cmd rsync -Krl "${NODEJS_UNTAR}/" "$node_install_path/"
else
# due to symlink issues on Arch Linux, don't copy the share directory
rm -rf ${NODEJS_UNTAR}/share
echo $sudo_cmd cp -Hr "${NODEJS_UNTAR}/*" "$node_install_path/"
cp -Hr "${NODEJS_UNTAR}"/* "$node_install_path/" 2>/dev/null || $sudo_cmd cp -Hr "${NODEJS_UNTAR}"/* "$node_install_path/"
fi
rm -rf "${NODEJS_UNTAR}"
sudo chown -R $(whoami) "$node_install_path/lib/node_modules/"
sudo chown $(whoami) ""$node_install_path"/bin/"
chown -R $(whoami) "$node_install_path/lib/node_modules/" 2>/dev/null || $sudo_cmd chown -R $(whoami) "$node_install_path/lib/node_modules/"
chown $(whoami) ""$node_install_path"/bin/" 2>/dev/null || $sudo_cmd chown $(whoami) ""$node_install_path"/bin/"
fi

View File

@ -1,345 +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/coolaj86/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
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/coolaj86/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 "$(arch | 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'
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"
;;
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 -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
bash "/tmp/${INSTALL_FILE}"