diff options
Diffstat (limited to 'packaging/installer/kickstart-static64.sh')
-rwxr-xr-x | packaging/installer/kickstart-static64.sh | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/packaging/installer/kickstart-static64.sh b/packaging/installer/kickstart-static64.sh new file mode 100755 index 0000000..cd13c41 --- /dev/null +++ b/packaging/installer/kickstart-static64.sh @@ -0,0 +1,252 @@ +#!/usr/bin/env sh +# SPDX-License-Identifier: GPL-3.0-or-later +# shellcheck disable=SC1117,SC2016,SC2034,SC2039,SC2059,SC2086,SC2119,SC2120,SC2129,SC2162,SC2166,SC2181 + +umask 022 + +# make sure UID is set +# shellcheck disable=SC2155 +[ -z "${UID}" ] && export UID="$(id -u)" + +# --------------------------------------------------------------------------------------------------------------------- +# library functions copied from packaging/installer/functions.sh + +which_cmd() { + # shellcheck disable=SC2230 + which "${1}" 2>/dev/null || command -v "${1}" 2>/dev/null +} + +check_cmd() { + which_cmd "${1}" >/dev/null 2>&1 && return 0 + return 1 +} + +setup_terminal() { + TPUT_RESET="" + TPUT_BLACK="" + TPUT_RED="" + TPUT_GREEN="" + TPUT_YELLOW="" + TPUT_BLUE="" + TPUT_PURPLE="" + TPUT_CYAN="" + TPUT_WHITE="" + TPUT_BGBLACK="" + TPUT_BGRED="" + TPUT_BGGREEN="" + TPUT_BGYELLOW="" + TPUT_BGBLUE="" + TPUT_BGPURPLE="" + TPUT_BGCYAN="" + TPUT_BGWHITE="" + TPUT_BOLD="" + TPUT_DIM="" + TPUT_UNDERLINED="" + TPUT_BLINK="" + TPUT_INVERTED="" + TPUT_STANDOUT="" + TPUT_BELL="" + TPUT_CLEAR="" + + # Is stderr on the terminal? If not, then fail + test -t 2 || return 1 + + if check_cmd tput + then + if [ $(( $(tput colors 2>/dev/null) )) -ge 8 ] + then + # Enable colors + TPUT_RESET="$(tput sgr 0)" + TPUT_BLACK="$(tput setaf 0)" + TPUT_RED="$(tput setaf 1)" + TPUT_GREEN="$(tput setaf 2)" + TPUT_YELLOW="$(tput setaf 3)" + TPUT_BLUE="$(tput setaf 4)" + TPUT_PURPLE="$(tput setaf 5)" + TPUT_CYAN="$(tput setaf 6)" + TPUT_WHITE="$(tput setaf 7)" + TPUT_BGBLACK="$(tput setab 0)" + TPUT_BGRED="$(tput setab 1)" + TPUT_BGGREEN="$(tput setab 2)" + TPUT_BGYELLOW="$(tput setab 3)" + TPUT_BGBLUE="$(tput setab 4)" + TPUT_BGPURPLE="$(tput setab 5)" + TPUT_BGCYAN="$(tput setab 6)" + TPUT_BGWHITE="$(tput setab 7)" + TPUT_BOLD="$(tput bold)" + TPUT_DIM="$(tput dim)" + TPUT_UNDERLINED="$(tput smul)" + TPUT_BLINK="$(tput blink)" + TPUT_INVERTED="$(tput rev)" + TPUT_STANDOUT="$(tput smso)" + TPUT_BELL="$(tput bel)" + TPUT_CLEAR="$(tput clear)" + fi + fi + + return 0 +} +setup_terminal || echo >/dev/null + +progress() { + echo >&2 " --- ${TPUT_DIM}${TPUT_BOLD}${*}${TPUT_RESET} --- " +} + +run_ok() { + printf >&2 "${TPUT_BGGREEN}${TPUT_WHITE}${TPUT_BOLD} OK ${TPUT_RESET} ${*} \n\n" +} + +run_failed() { + printf >&2 "${TPUT_BGRED}${TPUT_WHITE}${TPUT_BOLD} FAILED ${TPUT_RESET} ${*} \n\n" +} + +ESCAPED_PRINT_METHOD= +printf "%q " test >/dev/null 2>&1 +[ $? -eq 0 ] && ESCAPED_PRINT_METHOD="printfq" +escaped_print() { + if [ "${ESCAPED_PRINT_METHOD}" = "printfq" ] + then + printf "%q " "${@}" + else + printf "%s" "${*}" + fi + return 0 +} + +run_logfile="/dev/null" +run() { + local user="${USER--}" dir="${PWD}" info info_console + + if [ "${UID}" = "0" ] + then + info="[root ${dir}]# " + info_console="[${TPUT_DIM}${dir}${TPUT_RESET}]# " + else + info="[${user} ${dir}]$ " + info_console="[${TPUT_DIM}${dir}${TPUT_RESET}]$ " + fi + + printf >> "${run_logfile}" "${info}" + escaped_print >> "${run_logfile}" "${@}" + printf >> "${run_logfile}" " ... " + + printf >&2 "${info_console}${TPUT_BOLD}${TPUT_YELLOW}" + escaped_print >&2 "${@}" + printf >&2 "${TPUT_RESET}\n" + + "${@}" + + local ret=$? + if [ ${ret} -ne 0 ] + then + run_failed + printf >> "${run_logfile}" "FAILED with exit code ${ret}\n" + else + run_ok + printf >> "${run_logfile}" "OK\n" + fi + + return ${ret} +} + + +# --------------------------------------------------------------------------------------------------------------------- + +fatal() { + printf >&2 "${TPUT_BGRED}${TPUT_WHITE}${TPUT_BOLD} ABORTED ${TPUT_RESET} ${*} \n\n" + exit 1 +} + +# --------------------------------------------------------------------------------------------------------------------- + +if [ "$(uname -m)" != "x86_64" ] + then + fatal "Static binary versions of netdata are available only for 64bit Intel/AMD CPUs (x86_64), but yours is: $(uname -m)." +fi + +if [ "$(uname -s)" != "Linux" ] + then + fatal "Static binary versions of netdata are available only for Linux, but this system is $(uname -s)" +fi + +curl="$(which_cmd curl)" +wget="$(which_cmd wget)" + +# --------------------------------------------------------------------------------------------------------------------- + +progress "Checking the latest version of static build..." + +BASE='https://raw.githubusercontent.com/netdata/binary-packages/master' + +LATEST= +if [ ! -z "${curl}" -a -x "${curl}" ] +then + LATEST="$(run ${curl} "${BASE}/netdata-latest.gz.run")" +elif [ ! -z "${wget}" -a -x "${wget}" ] +then + LATEST="$(run ${wget} -O - "${BASE}/netdata-latest.gz.run")" +else + fatal "curl or wget are needed for this script to work." +fi + +if [ -z "${LATEST}" ] + then + fatal "Cannot find the latest static binary version of netdata." +fi + +# --------------------------------------------------------------------------------------------------------------------- + +progress "Downloading static netdata binary: ${LATEST}" + +ret=1 +if [ ! -z "${curl}" -a -x "${curl}" ] +then + run ${curl} "${BASE}/${LATEST}" >"/tmp/${LATEST}" + ret=$? +elif [ ! -z "${wget}" -a -x "${wget}" ] +then + run ${wget} -O "/tmp/${LATEST}" "${BASE}/${LATEST}" + ret=$? +else + fatal "curl or wget are needed for this script to work." +fi + +if [ ${ret} -ne 0 -o ! -s "/tmp/${LATEST}" ] + then + fatal "Failed to download the latest static binary version of netdata." +fi + +# --------------------------------------------------------------------------------------------------------------------- + +opts= +inner_opts= +while [ ! -z "${1}" ] +do + if [ "${1}" = "--dont-wait" -o "${1}" = "--non-interactive" -o "${1}" = "--accept" ] + then + opts="${opts} --accept" + elif [ "${1}" = "--dont-start-it" ] + then + inner_opts="${inner_opts} ${1}" + else + echo >&2 "Unknown option '${1}'" + exit 1 + fi + shift +done +[ ! -z "${inner_opts}" ] && inner_opts="-- ${inner_opts}" + +# --------------------------------------------------------------------------------------------------------------------- + +progress "Installing netdata" + +sudo= +[ "${UID}" != "0" ] && sudo="sudo" +run ${sudo} sh "/tmp/${LATEST}" ${opts} ${inner_opts} + +if [ $? -eq 0 ] + then + rm "/tmp/${LATEST}" +else + echo >&2 "NOTE: did not remove: /tmp/${LATEST}" +fi |