19
#
20
# Environment options:
21
#
22
+# TMPDIR specify where to save temporary files
23
# NETDATA_TARBALL_BASEURL set the base url for downloading the dist tarball
24
#
25
# This script will:
153
fi
154
}
155
156
+_cannot_use_tmpdir() {
157
+ local testfile ret
158
+ testfile="$(TMPDIR="${1}" mktemp -q -t netdata-test.XXXXXXXXXX)"
159
+ ret=0
160
+
161
+ if [ -z "${testfile}" ] ; then
162
+ return "${ret}"
163
+ fi
164
+
165
+ if /bin/echo -e '#!/bin/sh\necho SUCCESS\n' > "${testfile}" ; then
166
+ if chmod +x "${testfile}" ; then
167
+ if [ "$("${testfile}")" = "SUCCESS" ] ; then
168
+ ret=1
169
+ fi
170
+ fi
171
+ fi
172
+
173
+ rm -f "${testfile}"
174
+ return "${ret}"
175
+}
176
+
177
create_tmp_directory() {
156
- # Check if tmp is mounted as noexec
157
- if grep -Eq '^[^ ]+ /tmp [^ ]+ ([^ ]*,)?noexec[, ]' /proc/mounts > /dev/null 2>&1; then
158
- pattern="$(pwd)/netdata-kickstart-XXXXXX"
159
- else
160
- pattern="/tmp/netdata-kickstart-XXXXXX"
178
+ if [ -z "${TMPDIR}" ] || _cannot_use_tmpdir "${TMPDIR}" ; then
179
+ if _cannot_use_tmpdir /tmp ; then
180
+ if _cannot_use_tmpdir "${PWD}" ; then
181
+ echo >&2
182
+ echo >&2 "Unable to find a usable temprorary directory. Please set \$TMPDIR to a path that is both writable and allows execution of files and try again."
183
+ exit 1
184
+ else
185
+ TMPDIR="${PWD}"
186
+ fi
187
+ else
188
+ TMPDIR="/tmp"
189
+ fi
190
fi
191
163
- mktemp -d $pattern
192
+ mktemp -d -t netdata-kickstart-XXXXXXXXXX
193
}
194
195
download() {
265
progress "Fetching script to detect required packages..."
266
if [ -n "${NETDATA_LOCAL_TARBALL_OVERRIDE_DEPS_SCRIPT}" ]; then
267
if [ -f "${NETDATA_LOCAL_TARBALL_OVERRIDE_DEPS_SCRIPT}" ]; then
239
- run cp "${NETDATA_LOCAL_TARBALL_OVERRIDE_DEPS_SCRIPT}" "${TMPDIR}/install-required-packages.sh"
268
+ run cp "${NETDATA_LOCAL_TARBALL_OVERRIDE_DEPS_SCRIPT}" "${ndtmpdir}/install-required-packages.sh"
269
else
270
fatal "Invalid given dependency file, please check your --local-files parameter options and try again"
271
fi
272
else
244
- download "${PACKAGES_SCRIPT}" "${TMPDIR}/install-required-packages.sh"
273
+ download "${PACKAGES_SCRIPT}" "${ndtmpdir}/install-required-packages.sh"
274
fi
275
247
- if [ ! -s "${TMPDIR}/install-required-packages.sh" ]; then
276
+ if [ ! -s "${ndtmpdir}/install-required-packages.sh" ]; then
277
warning "Downloaded dependency installation script is empty."
278
else
279
progress "Running downloaded script to detect required packages..."
251
- run ${sudo} "${bash}" "${TMPDIR}/install-required-packages.sh" ${PACKAGES_INSTALLER_OPTIONS}
280
+ run ${sudo} "${bash}" "${ndtmpdir}/install-required-packages.sh" ${PACKAGES_INSTALLER_OPTIONS}
281
# shellcheck disable=SC2181
282
if [ $? -ne 0 ]; then
283
warning "It failed to install all the required packages, but installation might still be possible."
308
[ "${UID}" -ne "0" ] && sudo="sudo"
309
export PATH="${PATH}:/usr/local/bin:/usr/local/sbin"
310
311
+
312
# ---------------------------------------------------------------------------------------------------------------------
313
314
INTERACTIVE=1
442
# ---------------------------------------------------------------------------------------------------------------------
443
# install required system packages
444
415
-TMPDIR=$(create_tmp_directory)
416
-cd "${TMPDIR}" || exit 1
445
+ndtmpdir=$(create_tmp_directory)
446
+cd "${ndtmpdir}" || exit 1
447
448
dependencies
449
453
if [ -z "${NETDATA_LOCAL_TARBALL_OVERRIDE}" ]; then
454
set_tarball_urls "${RELEASE_CHANNEL}"
455
426
- download "${NETDATA_TARBALL_CHECKSUM_URL}" "${TMPDIR}/sha256sum.txt"
427
- download "${NETDATA_TARBALL_URL}" "${TMPDIR}/netdata-latest.tar.gz"
456
+ download "${NETDATA_TARBALL_CHECKSUM_URL}" "${ndtmpdir}/sha256sum.txt"
457
+ download "${NETDATA_TARBALL_URL}" "${ndtmpdir}/netdata-latest.tar.gz"
458
else
459
progress "Installation sources were given as input, running installation using \"${NETDATA_LOCAL_TARBALL_OVERRIDE}\""
430
- run cp "${NETDATA_LOCAL_TARBALL_OVERRIDE_CHECKSUM}" "${TMPDIR}/sha256sum.txt"
431
- run cp "${NETDATA_LOCAL_TARBALL_OVERRIDE}" "${TMPDIR}/netdata-latest.tar.gz"
460
+ run cp "${NETDATA_LOCAL_TARBALL_OVERRIDE_CHECKSUM}" "${ndtmpdir}/sha256sum.txt"
461
+ run cp "${NETDATA_LOCAL_TARBALL_OVERRIDE}" "${ndtmpdir}/netdata-latest.tar.gz"
462
fi
463
434
-if ! grep netdata-latest.tar.gz "${TMPDIR}/sha256sum.txt" | safe_sha256sum -c - > /dev/null 2>&1; then
435
- fatal "Tarball checksum validation failed. Stopping netdata installation and leaving tarball in ${TMPDIR}"
464
+if ! grep netdata-latest.tar.gz "${ndtmpdir}/sha256sum.txt" | safe_sha256sum -c - > /dev/null 2>&1; then
465
+ fatal "Tarball checksum validation failed. Stopping netdata installation and leaving tarball in ${ndtmpdir}"
466
fi
467
run tar -xf netdata-latest.tar.gz
468
rm -rf netdata-latest.tar.gz > /dev/null 2>&1
474
if [ -x netdata-installer.sh ]; then
475
progress "Installing netdata..."
476
run ${sudo} ./netdata-installer.sh ${NETDATA_UPDATES} ${NETDATA_INSTALLER_OPTIONS} "${@}" || fatal "netdata-installer.sh exited with error"
447
- if [ -d "${TMPDIR}" ] && [ ! "${TMPDIR}" = "/" ]; then
448
- run ${sudo} rm -rf "${TMPDIR}" > /dev/null 2>&1
477
+ if [ -d "${ndtmpdir}" ] && [ ! "${ndtmpdir}" = "/" ]; then
478
+ run ${sudo} rm -rf "${ndtmpdir}" > /dev/null 2>&1
479
fi
480
else
451
- fatal "Cannot install netdata from source (the source directory does not include netdata-installer.sh). Leaving all files in ${TMPDIR}"
481
+ fatal "Cannot install netdata from source (the source directory does not include netdata-installer.sh). Leaving all files in ${ndtmpdir}"
482
fi