summaryrefslogtreecommitdiffstats
path: root/packaging/installer
diff options
context:
space:
mode:
Diffstat (limited to 'packaging/installer')
-rw-r--r--packaging/installer/README.md4
-rwxr-xr-xpackaging/installer/kickstart-static64.sh81
-rwxr-xr-xpackaging/installer/kickstart.sh136
-rwxr-xr-xpackaging/installer/netdata-uninstaller.sh169
-rw-r--r--packaging/installer/netdata-updater.sh47
5 files changed, 328 insertions, 109 deletions
diff --git a/packaging/installer/README.md b/packaging/installer/README.md
index 14b16bd4..d30ed3ec 100644
--- a/packaging/installer/README.md
+++ b/packaging/installer/README.md
@@ -41,7 +41,7 @@ bash <(curl -Ss https://my-netdata.io/kickstart.sh)
Verify the integrity of the script with this:
```bash
-[ "7d16639b6ee14b0a33a8b90c979d3513" = "$(curl -Ss https://my-netdata.io/kickstart.sh | md5sum | cut -d ' ' -f 1)" ] && echo "OK, VALID" || echo "FAILED, INVALID"
+[ "b66c99c065abe1cf104c11236d4e8747" = "$(curl -Ss https://my-netdata.io/kickstart.sh | md5sum | cut -d ' ' -f 1)" ] && echo "OK, VALID" || echo "FAILED, INVALID"
```
*It should print `OK, VALID` if the script is the one we ship.*
@@ -95,7 +95,7 @@ To install Netdata with a binary package on any Linux distro, any kernel version
Verify the integrity of the script with this:
```bash
-[ "61ed714ebe0edf03e90cb5cef59fa991" = "$(curl -Ss https://my-netdata.io/kickstart-static64.sh | md5sum | cut -d ' ' -f 1)" ] && echo "OK, VALID" || echo "FAILED, INVALID"
+[ "8e6df9b6f6cc7de0d73f6e5e51a3c8c2" = "$(curl -Ss https://my-netdata.io/kickstart-static64.sh | md5sum | cut -d ' ' -f 1)" ] && echo "OK, VALID" || echo "FAILED, INVALID"
```
*It should print `OK, VALID` if the script is the one we ship.*
diff --git a/packaging/installer/kickstart-static64.sh b/packaging/installer/kickstart-static64.sh
index 3a6b2653..f6d0fc69 100755
--- a/packaging/installer/kickstart-static64.sh
+++ b/packaging/installer/kickstart-static64.sh
@@ -2,10 +2,6 @@
# SPDX-License-Identifier: GPL-3.0-or-later
# shellcheck disable=SC1117,SC2039,SC2059,SC2086
-# External files
-NIGHTLY_PACKAGE_TARBALL="https://storage.googleapis.com/netdata-nightlies/netdata-latest.gz.run"
-NIGHTLY_PACKAGE_CHECKSUM="https://storage.googleapis.com/netdata-nightlies/sha256sums.txt"
-
# ---------------------------------------------------------------------------------------------------------------------
# library functions copied from packaging/installer/functions.sh
@@ -73,18 +69,27 @@ run() {
return ${ret}
}
-# ---------------------------------------------------------------------------------------------------------------------
-
fatal() {
printf >&2 "${TPUT_BGRED}${TPUT_WHITE}${TPUT_BOLD} ABORTED ${TPUT_RESET} ${*} \n\n"
exit 1
}
+create_tmp_directory() {
+ # Check if tmp is mounted as noexec
+ if grep -Eq '^[^ ]+ /tmp [^ ]+ ([^ ]*,)?noexec[, ]' /proc/mounts; then
+ pattern="$(pwd)/netdata-kickstart-XXXXXX"
+ else
+ pattern="/tmp/netdata-kickstart-XXXXXX"
+ fi
+
+ mktemp -d $pattern
+}
+
download() {
url="${1}"
dest="${2}"
if command -v curl >/dev/null 2>&1; then
- run curl -L --connect-timeout 5 --retry 3 "${url}" >"${dest}" || fatal "Cannot download ${url}"
+ run curl -sSL --connect-timeout 10 --retry 3 "${url}" >"${dest}" || fatal "Cannot download ${url}"
elif command -v wget >/dev/null 2>&1; then
run wget -T 15 -O - "${url}" >"${dest}" || fatal "Cannot download ${url}"
else
@@ -92,6 +97,21 @@ download() {
fi
}
+set_tarball_urls() {
+ if [ "$1" == "stable" ]; then
+ local latest
+ # Simple version
+ # latest="$(curl -sSL https://api.github.com/repos/netdata/netdata/releases/latest | grep tag_name | cut -d'"' -f4)"
+ latest="$(download "https://api.github.com/repos/netdata/netdata/releases/latest" /dev/stdout | grep tag_name | cut -d'"' -f4)"
+ export NETDATA_TARBALL_URL="https://github.com/netdata/netdata/releases/download/$latest/netdata-$latest.gz.run"
+ export NETDATA_TARBALL_CHECKSUM_URL="https://github.com/netdata/netdata/releases/download/$latest/sha256sums.txt"
+ else
+ export NETDATA_TARBALL_URL="https://storage.googleapis.com/netdata-nightlies/netdata-latest.gz.run"
+ export NETDATA_TARBALL_CHECKSUM_URL="https://storage.googleapis.com/netdata-nightlies/sha256sums.txt"
+ fi
+}
+
+# ---------------------------------------------------------------------------------------------------------------------
umask 022
sudo=""
@@ -101,7 +121,6 @@ sudo=""
setup_terminal || echo >/dev/null
# ---------------------------------------------------------------------------------------------------------------------
-
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
@@ -111,51 +130,45 @@ if [ "$(uname -s)" != "Linux" ]; then
fi
# ---------------------------------------------------------------------------------------------------------------------
-
-# Check if tmp is mounted as noexec
-if grep -Eq '^[^ ]+ /tmp [^ ]+ ([^ ]*,)?noexec[, ]' /proc/mounts; then
- pattern="$(pwd)/netdata-kickstart-static-XXXXXX"
-else
- pattern="/tmp/netdata-kickstart-static-XXXXXX"
-fi
-
-tmpdir="$(mktemp -d $pattern)"
-cd "${tmpdir}" || :
-
-progress "Downloading static netdata binary: ${NIGHTLY_PACKAGE_TARBALL}"
-
-download "${NIGHTLY_PACKAGE_CHECKSUM}" "${tmpdir}/sha256sum.txt"
-download "${NIGHTLY_PACKAGE_TARBALL}" "${tmpdir}/netdata-latest.gz.run"
-if ! grep netdata-latest.gz.run sha256sum.txt | sha256sum --check - >/dev/null 2>&1; then
- failed "Static binary checksum validation failed. Stopping netdata installation and leaving binary in ${tmpdir}"
-fi
-
-# ---------------------------------------------------------------------------------------------------------------------
-
opts=
inner_opts=
-while [ ! -z "${1}" ]; do
+RELEASE_CHANNEL="nightly"
+while [ -n "${1}" ]; do
if [ "${1}" = "--dont-wait" ] || [ "${1}" = "--non-interactive" ] || [ "${1}" = "--accept" ]; then
opts="${opts} --accept"
elif [ "${1}" = "--dont-start-it" ]; then
inner_opts="${inner_opts} ${1}"
+ elif [ "${1}" = "--stable-channel" ]; then
+ RELEASE_CHANNEL="stable"
else
echo >&2 "Unknown option '${1}'"
exit 1
fi
shift
done
-[ ! -z "${inner_opts}" ] && inner_opts="-- ${inner_opts}"
+[ -n "${inner_opts}" ] && inner_opts="-- ${inner_opts}"
# ---------------------------------------------------------------------------------------------------------------------
+TMPDIR=$(create_tmp_directory)
+cd "${TMPDIR}" || :
+
+set_tarball_urls "${RELEASE_CHANNEL}"
+progress "Downloading static netdata binary: ${NETDATA_TARBALL_URL}"
+download "${NETDATA_TARBALL_CHECKSUM_URL}" "${TMPDIR}/sha256sum.txt"
+download "${NETDATA_TARBALL_URL}" "${TMPDIR}/netdata-latest.gz.run"
+if ! grep netdata-latest.gz.run "${TMPDIR}/sha256sum.txt" | sha256sum --check - >/dev/null 2>&1; then
+ fatal "Static binary checksum validation failed. Stopping netdata installation and leaving binary in ${TMPDIR}"
+fi
+
+# ---------------------------------------------------------------------------------------------------------------------
progress "Installing netdata"
-run ${sudo} sh "${tmpdir}/netdata-latest.gz.run" ${opts} ${inner_opts}
+run ${sudo} sh "${TMPDIR}/netdata-latest.gz.run" ${opts} ${inner_opts}
#shellcheck disable=SC2181
if [ $? -eq 0 ]; then
- rm "${tmpdir}/netdata-latest.gz.run"
+ rm "${TMPDIR}/netdata-latest.gz.run"
else
- echo >&2 "NOTE: did not remove: ${tmpdir}/netdata-latest.gz.run"
+ echo >&2 "NOTE: did not remove: ${TMPDIR}/netdata-latest.gz.run"
fi
diff --git a/packaging/installer/kickstart.sh b/packaging/installer/kickstart.sh
index 9a5e848b..196b7589 100755
--- a/packaging/installer/kickstart.sh
+++ b/packaging/installer/kickstart.sh
@@ -27,8 +27,6 @@
# External files
PACKAGES_SCRIPT="https://raw.githubusercontent.com/netdata/netdata-demo-site/master/install-required-packages.sh"
-NIGHTLY_PACKAGE_TARBALL="https://storage.googleapis.com/netdata-nightlies/netdata-latest.tar.gz"
-NIGHTLY_PACKAGE_CHECKSUM="https://storage.googleapis.com/netdata-nightlies/sha256sums.txt"
# ---------------------------------------------------------------------------------------------------------------------
# library functions copied from packaging/installer/functions.sh
@@ -97,6 +95,11 @@ run() {
return ${ret}
}
+fatal() {
+ printf >&2 "${TPUT_BGRED}${TPUT_WHITE}${TPUT_BOLD} ABORTED ${TPUT_RESET} ${*} \n\n"
+ exit 1
+}
+
warning() {
printf >&2 "${TPUT_BGRED}${TPUT_WHITE}${TPUT_BOLD} WARNING ${TPUT_RESET} ${*} \n\n"
if [ "${INTERACTIVE}" = "0" ]; then
@@ -107,16 +110,22 @@ warning() {
fi
}
-fatal() {
- printf >&2 "${TPUT_BGRED}${TPUT_WHITE}${TPUT_BOLD} ABORTED ${TPUT_RESET} ${*} \n\n"
- exit 1
+create_tmp_directory() {
+ # Check if tmp is mounted as noexec
+ if grep -Eq '^[^ ]+ /tmp [^ ]+ ([^ ]*,)?noexec[, ]' /proc/mounts; then
+ pattern="$(pwd)/netdata-kickstart-XXXXXX"
+ else
+ pattern="/tmp/netdata-kickstart-XXXXXX"
+ fi
+
+ mktemp -d $pattern
}
download() {
url="${1}"
dest="${2}"
if command -v curl >/dev/null 2>&1; then
- run curl -L --connect-timeout 5 --retry 3 "${url}" >"${dest}" || fatal "Cannot download ${url}"
+ run curl -sSL --connect-timeout 10 --retry 3 "${url}" >"${dest}" || fatal "Cannot download ${url}"
elif command -v wget >/dev/null 2>&1; then
run wget -T 15 -O - "${url}" >"${dest}" || fatal "Cannot download ${url}"
else
@@ -124,6 +133,20 @@ download() {
fi
}
+set_tarball_urls() {
+ if [ "$1" == "stable" ]; then
+ local latest
+ # Simple version
+ # latest="$(curl -sSL https://api.github.com/repos/netdata/netdata/releases/latest | grep tag_name | cut -d'"' -f4)"
+ latest="$(download "https://api.github.com/repos/netdata/netdata/releases/latest" /dev/stdout | grep tag_name | cut -d'"' -f4)"
+ export NETDATA_TARBALL_URL="https://github.com/netdata/netdata/releases/download/$latest/netdata-$latest.tar.gz"
+ export NETDATA_TARBALL_CHECKSUM_URL="https://github.com/netdata/netdata/releases/download/$latest/sha256sums.txt"
+ else
+ export NETDATA_TARBALL_URL="https://storage.googleapis.com/netdata-nightlies/netdata-latest.tar.gz"
+ export NETDATA_TARBALL_CHECKSUM_URL="https://storage.googleapis.com/netdata-nightlies/sha256sums.txt"
+ fi
+}
+
detect_bash4() {
bash="${1}"
if [ -z "${BASH_VERSION}" ]; then
@@ -147,6 +170,40 @@ detect_bash4() {
return 0
}
+dependencies() {
+ SYSTEM="$(uname -s)"
+ OS="$(uname -o)"
+ MACHINE="$(uname -m)"
+
+ echo "System : ${SYSTEM}"
+ echo "Operating System : ${OS}"
+ echo "Machine : ${MACHINE}"
+ echo "BASH major version: ${BASH_MAJOR_VERSION}"
+
+ if [ "${OS}" != "GNU/Linux" ] && [ "${SYSTEM}" != "Linux" ]; then
+ warning "Cannot detect the packages to be installed on a ${SYSTEM} - ${OS} system."
+ else
+ bash="$(command -v bash 2>/dev/null)"
+ if ! detect_bash4 "${bash}"; then
+ warning "Cannot detect packages to be installed in this system, without BASH v4+."
+ else
+ progress "Downloading script to detect required packages..."
+ download "${PACKAGES_SCRIPT}" "${TMPDIR}/install-required-packages.sh"
+ if [ ! -s "${TMPDIR}/install-required-packages.sh" ]; then
+ warning "Downloaded dependency installation script is empty."
+ else
+ progress "Running downloaded script to detect required packages..."
+ run ${sudo} "${bash}" "${TMPDIR}/install-required-packages.sh" ${PACKAGES_INSTALLER_OPTIONS}
+ # shellcheck disable=SC2181
+ if [ $? -ne 0 ] ; then
+ warning "It failed to install all the required packages, but installation might still be possible."
+ fi
+ fi
+
+ fi
+ fi
+}
+
umask 022
sudo=""
@@ -181,6 +238,7 @@ INTERACTIVE=1
PACKAGES_INSTALLER_OPTIONS="netdata"
NETDATA_INSTALLER_OPTIONS=""
NETDATA_UPDATES="--auto-update"
+RELEASE_CHANNEL="nightly"
while [ -n "${1}" ]; do
if [ "${1}" = "all" ]; then
PACKAGES_INSTALLER_OPTIONS="netdata-all"
@@ -192,6 +250,9 @@ while [ -n "${1}" ]; do
# echo >&2 "netdata will not auto-update"
NETDATA_UPDATES=
shift 1
+ elif [ "${1}" = "--stable-channel" ]; then
+ RELEASE_CHANNEL="stable"
+ shift 1
else
break
fi
@@ -202,59 +263,20 @@ if [ "${INTERACTIVE}" = "0" ]; then
NETDATA_INSTALLER_OPTIONS="--dont-wait"
fi
-# ---------------------------------------------------------------------------------------------------------------------
-# detect system parameters and install dependencies
-
-SYSTEM="$(uname -s)"
-OS="$(uname -o)"
-MACHINE="$(uname -m)"
-
-cat <<EOF
-System : ${SYSTEM}
-Operating System : ${OS}
-Machine : ${MACHINE}
-BASH major version: ${BASH_MAJOR_VERSION}
-EOF
-
-# Check if tmp is mounted as noexec
-if grep -Eq '^[^ ]+ /tmp [^ ]+ ([^ ]*,)?noexec[, ]' /proc/mounts; then
- pattern="$(pwd)/netdata-kickstart-XXXXXX"
-else
- pattern="/tmp/netdata-kickstart-XXXXXX"
-fi
+TMPDIR=$(create_tmp_directory)
+cd ${TMPDIR} || :
-tmpdir="$(mktemp -d $pattern)"
-cd "${tmpdir}" || :
-
-if [ "${OS}" != "GNU/Linux" ] && [ "${SYSTEM}" != "Linux" ]; then
- warning "Cannot detect the packages to be installed on a ${SYSTEM} - ${OS} system."
-else
- bash="$(command -v bash 2>/dev/null)"
- if ! detect_bash4 "${bash}"; then
- warning "Cannot detect packages to be installed in this system, without BASH v4+."
- else
- progress "Downloading script to detect required packages..."
- download "${PACKAGES_SCRIPT}" "${tmpdir}/install-required-packages.sh"
- if [ ! -s "${tmpdir}/install-required-packages.sh" ]; then
- warning "Downloaded dependency installation script is empty."
- else
- progress "Running downloaded script to detect required packages..."
- run ${sudo} "${bash}" "${tmpdir}/install-required-packages.sh" ${PACKAGES_INSTALLER_OPTIONS}
- if [ $? -ne 0 ] ; then
- warning "It failed to install all the required packages, but installation might still be possible."
- fi
- fi
-
- fi
-fi
+dependencies
# ---------------------------------------------------------------------------------------------------------------------
-# download netdata nightly package
+# download netdata package
+
+set_tarball_urls "${RELEASE_CHANNEL}"
-download "${NIGHTLY_PACKAGE_CHECKSUM}" "${tmpdir}/sha256sum.txt"
-download "${NIGHTLY_PACKAGE_TARBALL}" "${tmpdir}/netdata-latest.tar.gz"
-if ! grep netdata-latest.tar.gz sha256sum.txt | sha256sum --check - >/dev/null 2>&1; then
- failed "Tarball checksum validation failed. Stopping netdata installation and leaving tarball in ${tmpdir}"
+download "${NETDATA_TARBALL_CHECKSUM_URL}" "${TMPDIR}/sha256sum.txt"
+download "${NETDATA_TARBALL_URL}" "${TMPDIR}/netdata-latest.tar.gz"
+if ! grep netdata-latest.tar.gz "${TMPDIR}/sha256sum.txt" | sha256sum --check - >/dev/null 2>&1; then
+ fatal "Tarball checksum validation failed. Stopping netdata installation and leaving tarball in ${TMPDIR}"
fi
run tar -xf netdata-latest.tar.gz
rm -rf netdata-latest.tar.gz >/dev/null 2>&1
@@ -266,7 +288,7 @@ cd netdata-* || fatal "Cannot cd to netdata source tree"
if [ -x netdata-installer.sh ]; then
progress "Installing netdata..."
run ${sudo} ./netdata-installer.sh ${NETDATA_UPDATES} ${NETDATA_INSTALLER_OPTIONS} "${@}" || fatal "netdata-installer.sh exited with error"
- rm -rf "${tmpdir}" >/dev/null 2>&1
+ rm -rf "${TMPDIR}" >/dev/null 2>&1
else
- fatal "Cannot install netdata from source (the source directory does not include netdata-installer.sh). Leaving all files in ${tmpdir}"
+ fatal "Cannot install netdata from source (the source directory does not include netdata-installer.sh). Leaving all files in ${TMPDIR}"
fi
diff --git a/packaging/installer/netdata-uninstaller.sh b/packaging/installer/netdata-uninstaller.sh
new file mode 100755
index 00000000..96dd6290
--- /dev/null
+++ b/packaging/installer/netdata-uninstaller.sh
@@ -0,0 +1,169 @@
+#!/usr/bin/env bash
+#shellcheck disable=SC2181
+
+# this script will uninstall netdata
+
+# Variables needed by script and taken from '.environment' file:
+# - NETDATA_PREFIX
+# - NETDATA_ADDED_TO_GROUPS
+
+usage="$(basename "$0") [-h] [-f ] -- program to calculate the answer to life, the universe and everything
+
+where:
+ -e, --env path to environment file (defauls to '/etc/netdata/.environment'
+ -f, --force force uninstallation and do not ask any questions
+ -h show this help text
+ -y, --yes flag needs to be set to proceed with uninstallation"
+
+FILE_REMOVAL_STATUS=0
+ENVIRONMENT_FILE="/etc/netdata/.environment"
+INTERACTIVITY="-i"
+YES=0
+while :; do
+ case "$1" in
+ -h | --help)
+ echo "$usage" >&2
+ exit 1
+ ;;
+ -f | --force)
+ INTERACTIVITY="-f"
+ shift
+ ;;
+ -y | --yes)
+ YES=1
+ shift
+ ;;
+ -e | --env)
+ ENVIRONMENT_FILE="$2"
+ shift 2
+ ;;
+ -*)
+ echo "$usage" >&2
+ exit 1
+ ;;
+ *) break ;;
+ esac
+done
+
+if [ "$YES" != "1" ]; then
+ echo "This script will REMOVE netdata from your system."
+ echo "Run it again with --yes to do it."
+ exit 1
+fi
+
+if [[ $EUID -ne 0 ]]; then
+ echo "This script SHOULD be run as root or otherwise it won't delete all installed components."
+ key="n"
+ read -r -s -n 1 -p "Do you want to continue as non-root user [y/n] ? " key
+ if [ "$key" != "y" ] && [ "$key" != "Y" ]; then
+ exit 1
+ fi
+fi
+
+function quit_msg() {
+ echo
+ if [ "$FILE_REMOVAL_STATUS" -eq 0 ]; then
+ echo "Something went wrong :("
+ else
+ echo "Netdata files were successfully removed from your system"
+ fi
+}
+
+function user_input() {
+ TEXT="$1"
+ if [ "${INTERACTIVITY}" == "-i" ]; then
+ read -r -p "$TEXT" >&2
+ fi
+}
+
+function rm_file() {
+ FILE="$1"
+ if [ -f "${FILE}" ]; then
+ rm -v ${INTERACTIVITY} "${FILE}"
+ fi
+}
+
+function rm_dir() {
+ DIR="$1"
+ if [ -n "$DIR" ] && [ -d "$DIR" ]; then
+ user_input "Press ENTER to recursively delete directory '$DIR' > "
+ rm -v -f -R "${DIR}"
+ fi
+}
+
+netdata_pids() {
+ local p myns ns
+ myns="$(readlink /proc/self/ns/pid 2>/dev/null)"
+ for p in \
+ $(cat /var/run/netdata.pid 2>/dev/null) \
+ $(cat /var/run/netdata/netdata.pid 2>/dev/null) \
+ $(pidof netdata 2>/dev/null); do
+
+ ns="$(readlink "/proc/${p}/ns/pid" 2>/dev/null)"
+ #shellcheck disable=SC2002
+ if [ -z "${myns}" ] || [ -z "${ns}" ] || [ "${myns}" = "${ns}" ]; then
+ name="$(cat "/proc/${p}/stat" 2>/dev/null | cut -d '(' -f 2 | cut -d ')' -f 1)"
+ if [ "${name}" = "netdata" ]; then
+ echo "${p}"
+ fi
+ fi
+ done
+}
+
+trap quit_msg EXIT
+
+#shellcheck source=/dev/null
+source "${ENVIRONMENT_FILE}" || exit 1
+
+#### STOP NETDATA
+echo "Stopping a possibly running netdata..."
+for p in $(netdata_pids); do
+ i=0
+ while kill "${p}" 2>/dev/null; do
+ if [ "$i" -gt 30 ]; then
+ echo "Forcefully stopping netdata with pid ${p}"
+ kill -9 "${p}"
+ sleep 2
+ break
+ fi
+ sleep 1
+ i=$((i + 1))
+ done
+done
+sleep 2
+
+#### REMOVE NETDATA FILES
+rm_file /etc/logrotate.d/netdata
+rm_file /etc/systemd/system/netdata.service
+rm_file /lib/systemd/system/netdata.service
+rm_file /usr/lib/systemd/system/netdata.service
+rm_file /etc/init.d/netdata
+rm_file /etc/periodic/daily/netdata-updater
+rm_file /etc/cron.daily/netdata-updater
+
+if [ -n "${NETDATA_PREFIX}" ] && [ -d "${NETDATA_PREFIX}" ]; then
+ rm_dir "${NETDATA_PREFIX}"
+else
+ rm_file "/usr/sbin/netdata"
+ rm_dir "/usr/share/netdata"
+ rm_dir "/usr/libexec/netdata"
+ rm_dir "/var/lib/netdata"
+ rm_dir "/var/cache/netdata"
+ rm_dir "/var/log/netdata"
+ rm_dir "/etc/netdata"
+fi
+
+FILE_REMOVAL_STATUS=1
+
+#### REMOVE NETDATA USER & GROUP
+if [ -n "$NETDATA_ADDED_TO_GROUPS" ]; then
+ user_input "Press ENTER to delete 'netdata' from following groups: '$NETDATA_ADDED_TO_GROUPS' > "
+ for group in $NETDATA_ADDED_TO_GROUPS; do
+ gpasswd -d netdata "${group}"
+ done
+fi
+
+user_input "Press ENTER to delete 'netdata' system user > "
+userdel -f netdata || :
+user_input "Press ENTER to delete 'netdata' system group > "
+groupdel -f netdata || :
diff --git a/packaging/installer/netdata-updater.sh b/packaging/installer/netdata-updater.sh
index 7846ce8b..2dce5efc 100644
--- a/packaging/installer/netdata-updater.sh
+++ b/packaging/installer/netdata-updater.sh
@@ -21,7 +21,7 @@ error() {
}
# this is what we will do if it fails (head-less only)
-failed() {
+fatal() {
error "FAILED TO UPDATE NETDATA : ${1}"
if [ -n "${logfile}" ]; then
@@ -31,30 +31,47 @@ failed() {
exit 1
}
+create_tmp_directory() {
+ # Check if tmp is mounted as noexec
+ if grep -Eq '^[^ ]+ /tmp [^ ]+ ([^ ]*,)?noexec[, ]' /proc/mounts; then
+ pattern="$(pwd)/netdata-updater-XXXXXX"
+ else
+ pattern="/tmp/netdata-updater-XXXXXX"
+ fi
+
+ mktemp -d "$pattern"
+}
+
download() {
url="${1}"
dest="${2}"
if command -v curl >/dev/null 2>&1; then
- curl -L --connect-timeout 5 --retry 3 "${url}" >"${dest}" || fatal "Cannot download ${url}"
+ curl -sSL --connect-timeout 10 --retry 3 "${url}" >"${dest}" || fatal "Cannot download ${url}"
elif command -v wget >/dev/null 2>&1; then
wget -T 15 -O - "${url}" >"${dest}" || fatal "Cannot download ${url}"
else
- failed "I need curl or wget to proceed, but neither is available on this system."
+ fatal "I need curl or wget to proceed, but neither is available on this system."
fi
}
-update() {
- [ -z "${logfile}" ] && info "Running on a terminal - (this script also supports running headless from crontab)"
-
- # Check if tmp is mounted as noexec
- if grep -Eq '^[^ ]+ /tmp [^ ]+ ([^ ]*,)?noexec[, ]' /proc/mounts; then
- pattern="$(pwd)/netdata-updater-XXXXXX"
+set_tarball_urls() {
+ if [ "$1" == "stable" ]; then
+ local latest
+ # Simple version
+ # latest="$(curl -sSL https://api.github.com/repos/netdata/netdata/releases/latest | grep tag_name | cut -d'"' -f4)"
+ latest="$(download "https://api.github.com/repos/netdata/netdata/releases/latest" /dev/stdout | grep tag_name | cut -d'"' -f4)"
+ export NETDATA_TARBALL_URL="https://github.com/netdata/netdata/releases/download/$latest/netdata-$latest.tar.gz"
+ export NETDATA_TARBALL_CHECKSUM_URL="https://github.com/netdata/netdata/releases/download/$latest/sha256sums.txt"
else
- pattern="/tmp/netdata-updater-XXXXXX"
+ export NETDATA_TARBALL_URL="https://storage.googleapis.com/netdata-nightlies/netdata-latest.tar.gz"
+ export NETDATA_TARBALL_CHECKSUM_URL="https://storage.googleapis.com/netdata-nightlies/sha256sums.txt"
fi
+}
- dir=$(mktemp -d "$pattern")
+update() {
+ [ -z "${logfile}" ] && info "Running on a terminal - (this script also supports running headless from crontab)"
+ dir=$(create_tmp_directory)
cd "$dir"
download "${NETDATA_TARBALL_CHECKSUM_URL}" "${dir}/sha256sum.txt" >&3 2>&3
@@ -85,11 +102,9 @@ update() {
fi
info "Re-installing netdata..."
- eval "${REINSTALL_COMMAND} --dont-wait ${do_not_start}" >&3 2>&3 || failed "FAILED TO COMPILE/INSTALL NETDATA"
+ eval "${REINSTALL_COMMAND} --dont-wait ${do_not_start}" >&3 2>&3 || fatal "FAILED TO COMPILE/INSTALL NETDATA"
sed -i '/NETDATA_TARBALL/d' "${ENVIRONMENT_FILE}"
cat <<EOF >>"${ENVIRONMENT_FILE}"
-NETDATA_TARBALL_URL="$NETDATA_TARBALL_URL"
-NETDATA_TARBALL_CHECKSUM_URL="$NETDATA_TARBALL_CHECKSUM_URL"
NETDATA_TARBALL_CHECKSUM="$NEW_CHECKSUM"
EOF
@@ -105,8 +120,7 @@ EOF
source "${ENVIRONMENT_FILE}" || exit 1
if [ "${INSTALL_UID}" != "$(id -u)" ]; then
- echo >&2 "You are running this script as user with uid $(id -u). We recommend to run this script as root (user with uid 0)"
- exit 1
+ fatal "You are running this script as user with uid $(id -u). We recommend to run this script as root (user with uid 0)"
fi
logfile=
@@ -122,6 +136,7 @@ else
exec 3>"${logfile}"
fi
+set_tarball_urls "${RELEASE_CHANNEL}"
# the installer updates this script - so we run and exit in a single line
update && exit 0