@cryptotaxi247 / netdata-1 / commits / 3b41c79af

cleanup updater script and no `/opt` usage (#5218)

Paweł Krupa committed Feb 13, 2019 at 16:24 UTC 3b41c79afdd7d5b2d6f2ed0225a51b0df7e63158
2 files changed +59 -47
packaging/installer/kickstart.sh
+1 -1
@@ -218,7 +218,7 @@ EOF
218
219 # Check if tmp is mounted as noexec
220 if grep -Eq '^[^ ]+ /tmp [^ ]+ ([^ ]*,)?noexec[, ]' /proc/mounts; then
221 - pattern="/opt/netdata-kickstart-XXXXXX"
221 + pattern="$(pwd)/netdata-kickstart-XXXXXX"
222 else
223 pattern="/tmp/netdata-kickstart-XXXXXX"
224 fi
packaging/installer/netdata-updater.sh
+58 -46
@@ -12,43 +12,6 @@
12 # - NETDATA_TARBALL_CHECKSUM_URL
13 # - NETDATA_TARBALL_CHECKSUM
14
15 -
16 -# Usually stored in /etc/netdata/.environment
17 -: "${ENVIRONMENT_FILE:=THIS_SHOULD_BE_REPLACED_BY_INSTALLER_SCRIPT}"
18 -
19 -# shellcheck source=/dev/null
20 -source "${ENVIRONMENT_FILE}" || exit 1
21 -
22 -if [ "${INSTALL_UID}" != "$(id -u)" ]; then
23 - 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)"
24 - exit 1
25 -fi
26 -
27 -# signal netdata to start saving its database
28 -# this is handy if your database is big
29 -pids=$(pidof netdata)
30 -do_not_start=
31 -if [ -n "${pids}" ]; then
32 - #shellcheck disable=SC2086
33 - kill -USR1 ${pids}
34 -else
35 - # netdata is currently not running, so do not start it after updating
36 - do_not_start="--dont-start-it"
37 -fi
38 -
39 -tmp=
40 -if [ -t 2 ]; then
41 - # we are running on a terminal
42 - # open fd 3 and send it to stderr
43 - exec 3>&2
44 -else
45 - # we are headless
46 - # create a temporary file for the log
47 - tmp=$(mktemp /tmp/netdata-updater.log.XXXXXX)
48 - # open fd 3 and send it to tmp
49 - exec 3>"${tmp}"
50 -fi
51 -
15 info() {
16 echo >&3 "$(date) : INFO: " "${@}"
17 }
@@ -61,19 +24,31 @@ error() {
24 failed() {
25 error "FAILED TO UPDATE NETDATA : ${1}"
26
64 - if [ -n "${tmp}" ]; then
65 - cat >&2 "${tmp}"
66 - rm "${tmp}"
27 + if [ -n "${logfile}" ]; then
28 + cat >&2 "${logfile}"
29 + rm "${logfile}"
30 fi
31 exit 1
32 }
33
34 +download() {
35 + url="${1}"
36 + dest="${2}"
37 + if command -v wget >/dev/null 2>&1; then
38 + wget -O - "${url}" >"${dest}" 2>&3 || echo >&2 "Cannot download ${url}" >&3 2>&3
39 + elif command -v curl >/dev/null 2>&1; then
40 + curl "${url}" >"${dest}" 2>&3 || echo "Cannot download ${url}" >&3 2>&3
41 + else
42 + failed "curl or wget is needed to proceed, but neither is available on this system."
43 + fi
44 +}
45 +
46 update() {
72 - [ -z "${tmp}" ] && info "Running on a terminal - (this script also supports running headless from crontab)"
47 + [ -z "${logfile}" ] && info "Running on a terminal - (this script also supports running headless from crontab)"
48
49 # Check if tmp is mounted as noexec
50 if grep -Eq '^[^ ]+ /tmp [^ ]+ ([^ ]*,)?noexec[, ]' /proc/mounts; then
76 - pattern="/opt/netdata-updater-XXXXXX"
51 + pattern="$(pwd)/netdata-updater-XXXXXX"
52 else
53 pattern="/tmp/netdata-updater-XXXXXX"
54 fi
@@ -82,13 +57,13 @@ update() {
57
58 cd "$dir"
59
85 - wget "${NETDATA_TARBALL_CHECKSUM_URL}" -O sha256sum.txt >&3 2>&3
60 + download "${NETDATA_TARBALL_CHECKSUM_URL}" "${dir}/sha256sum.txt" >&3 2>&3
61 if grep "${NETDATA_TARBALL_CHECKSUM}" sha256sum.txt >&3 2>&3; then
62 info "Newest version is already installed"
63 exit 0
64 fi
65
91 - wget "${NETDATA_TARBALL_URL}" -O netdata-latest.tar.gz >&3 2>&3
66 + download "${NETDATA_TARBALL_URL}" "${dir}/netdata-latest.tar.gz"
67 if ! grep netdata-latest.tar.gz sha256sum.txt | sha256sum --check - >&3 2>&3; then
68 failed "Tarball checksum validation failed. Stopping netdata upgrade and leaving tarball in ${dir}"
69 fi
@@ -97,8 +72,20 @@ update() {
72 rm netdata-latest.tar.gz >&3 2>&3
73 cd netdata-*
74
75 + # signal netdata to start saving its database
76 + # this is handy if your database is big
77 + pids=$(pidof netdata)
78 + do_not_start=
79 + if [ -n "${pids}" ]; then
80 + #shellcheck disable=SC2086
81 + kill -USR1 ${pids}
82 + else
83 + # netdata is currently not running, so do not start it after updating
84 + do_not_start="--dont-start-it"
85 + fi
86 +
87 info "Re-installing netdata..."
101 - ${REINSTALL_COMMAND} --dont-wait ${do_not_start} >&3 2>&3 || failed "FAILED TO COMPILE/INSTALL NETDATA"
88 + eval "${REINSTALL_COMMAND} --dont-wait ${do_not_start}" >&3 2>&3 || failed "FAILED TO COMPILE/INSTALL NETDATA"
89 sed -i '/NETDATA_TARBALL/d' "${ENVIRONMENT_FILE}"
90 cat <<EOF >>"${ENVIRONMENT_FILE}"
91 NETDATA_TARBALL_URL="$NETDATA_TARBALL_URL"
@@ -107,9 +94,34 @@ NETDATA_TARBALL_CHECKSUM="$NEW_CHECKSUM"
94 EOF
95
96 rm -rf "${dir}" >&3 2>&3
110 - [ -n "${tmp}" ] && rm "${tmp}" && tmp=
97 + [ -n "${logfile}" ] && rm "${logfile}" && logfile=
98 return 0
99 }
100
101 +# Usually stored in /etc/netdata/.environment
102 +: "${ENVIRONMENT_FILE:=THIS_SHOULD_BE_REPLACED_BY_INSTALLER_SCRIPT}"
103 +
104 +# shellcheck source=/dev/null
105 +source "${ENVIRONMENT_FILE}" || exit 1
106 +
107 +if [ "${INSTALL_UID}" != "$(id -u)" ]; then
108 + 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)"
109 + exit 1
110 +fi
111 +
112 +logfile=
113 +if [ -t 2 ]; then
114 + # we are running on a terminal
115 + # open fd 3 and send it to stderr
116 + exec 3>&2
117 +else
118 + # we are headless
119 + # create a temporary file for the log
120 + logfile=$(mktemp ${logfile}/netdata-updater.log.XXXXXX)
121 + # open fd 3 and send it to logfile
122 + exec 3>"${logfile}"
123 +fi
124 +
125 +
126 # the installer updates this script - so we run and exit in a single line
127 update && exit 0