netdata/packaging: Move tarball checksum information into lib dir of netdata (#6555)
* netdata/packaging: Move tarball checksum information into lib dir of netdata 1) Introduce NETDATA_LIB_DIR within environment file, we are going to need to refer to it 2) move NETDATA_TARBALL_CHECKSUM to /netdata.tarball.checksum 3) Make sure you support transitional period, which means load and remove the variable from the old location then move it to the new one * netdata/packaging: relocate netdata-updater.sh and netdata-uninstaller.sh
Paul Emm. Katsoulakis committed
Jul 29, 2019 at 15:33 UTC
c8b82d9a37bea5203000eecdcd0d3a68fdff0ac8
3 files changed
+39
-15
netdata-installer.sh
+26
-10
@@ -985,8 +985,13 @@ fi
985
986
# -----------------------------------------------------------------------------
987
progress "Copy uninstaller"
988
-sed "s|ENVIRONMENT_FILE=\"/etc/netdata/.environment\"|ENVIRONMENT_FILE=\"${NETDATA_PREFIX}/etc/netdata/.environment\"|" packaging/installer/netdata-uninstaller.sh > ${NETDATA_PREFIX}/usr/libexec/netdata-uninstaller.sh
989
-chmod 750 ${NETDATA_PREFIX}/usr/libexec/netdata-uninstaller.sh
988
+if [ -f "${NETDATA_PREFIX}"/usr/libexec/netdata-uninstaller.sh ]; then
989
+ echo >&2 "Removing uninstaller from old location"
990
+ rm -f "${NETDATA_PREFIX}"/usr/libexec/netdata-uninstaller.sh;
991
+fi
992
+
993
+sed "s|ENVIRONMENT_FILE=\"/etc/netdata/.environment\"|ENVIRONMENT_FILE=\"${NETDATA_PREFIX}/etc/netdata/.environment\"|" packaging/installer/netdata-uninstaller.sh > ${NETDATA_PREFIX}/usr/libexec/netdata/netdata-uninstaller.sh
994
+chmod 750 ${NETDATA_PREFIX}/usr/libexec/netdata/netdata-uninstaller.sh
995
996
# -----------------------------------------------------------------------------
997
progress "Basic netdata instructions"
@@ -1007,19 +1012,24 @@ To start netdata run:
1012
${TPUT_YELLOW}${TPUT_BOLD}${NETDATA_START_CMD}${TPUT_RESET}
1013
1014
END
1010
-echo >&2 "Uninstall script copied to: ${TPUT_RED}${TPUT_BOLD}${NETDATA_PREFIX}/usr/libexec/netdata-uninstaller.sh${TPUT_RESET}"
1015
+echo >&2 "Uninstall script copied to: ${TPUT_RED}${TPUT_BOLD}${NETDATA_PREFIX}/usr/libexec/netdata/netdata-uninstaller.sh${TPUT_RESET}"
1016
echo >&2
1017
1018
progress "Install netdata updater tool"
1019
1020
+if [ -f "${NETDATA_PREFIX}"/usr/libexec/netdata-updater.sh ]; then
1021
+ echo >&2 "Removing updater from previous location"
1022
+ rm -f "${NETDATA_PREFIX}"/usr/libexec/netdata-updater.sh
1023
+fi
1024
+
1025
if [ -f "${INSTALLER_DIR}/packaging/installer/netdata-updater.sh" ]; then
1016
- sed "s|THIS_SHOULD_BE_REPLACED_BY_INSTALLER_SCRIPT|${NETDATA_USER_CONFIG_DIR}/.environment|" "${INSTALLER_DIR}/packaging/installer/netdata-updater.sh" > "${NETDATA_PREFIX}/usr/libexec/netdata-updater.sh" || exit 1
1026
+ sed "s|THIS_SHOULD_BE_REPLACED_BY_INSTALLER_SCRIPT|${NETDATA_USER_CONFIG_DIR}/.environment|" "${INSTALLER_DIR}/packaging/installer/netdata-updater.sh" > "${NETDATA_PREFIX}/usr/libexec/netdata/netdata-updater.sh" || exit 1
1027
else
1018
- sed "s|THIS_SHOULD_BE_REPLACED_BY_INSTALLER_SCRIPT|${NETDATA_USER_CONFIG_DIR}/.environment|" "${NETDATA_SOURCE_DIR}/packaging/installer/netdata-updater.sh" > "${NETDATA_PREFIX}/usr/libexec/netdata-updater.sh" || exit 1
1028
+ sed "s|THIS_SHOULD_BE_REPLACED_BY_INSTALLER_SCRIPT|${NETDATA_USER_CONFIG_DIR}/.environment|" "${NETDATA_SOURCE_DIR}/packaging/installer/netdata-updater.sh" > "${NETDATA_PREFIX}/usr/libexec/netdata/netdata-updater.sh" || exit 1
1029
fi
1030
1021
-chmod 0755 ${NETDATA_PREFIX}/usr/libexec/netdata-updater.sh
1022
-echo >&2 "Update script is located at ${TPUT_GREEN}${TPUT_BOLD}${NETDATA_PREFIX}/usr/libexec/netdata-updater.sh${TPUT_RESET}"
1031
+chmod 0755 ${NETDATA_PREFIX}/usr/libexec/netdata/netdata-updater.sh
1032
+echo >&2 "Update script is located at ${TPUT_GREEN}${TPUT_BOLD}${NETDATA_PREFIX}/usr/libexec/netdata/netdata-updater.sh${TPUT_RESET}"
1033
echo >&2
1034
1035
# Figure out the cron directory for the distro
@@ -1043,7 +1053,7 @@ else
1053
echo >&2 "Adding to cron"
1054
1055
rm -f "${crondir}/netdata-updater"
1046
- ln -sf "${NETDATA_PREFIX}/usr/libexec/netdata-updater.sh" "${crondir}/netdata-updater"
1056
+ ln -sf "${NETDATA_PREFIX}/usr/libexec/netdata/netdata-updater.sh" "${crondir}/netdata-updater"
1057
1058
echo >&2 "Auto-updating has been enabled. Updater script linked to: ${TPUT_RED}${TPUT_BOLD}${crondir}/netdata-update${TPUT_RESET}"
1059
echo >&2
@@ -1062,7 +1072,10 @@ else
1072
fi
1073
fi
1074
1075
+progress "Wrap up environment set up"
1076
+
1077
# Save environment variables
1078
+echo >&2 "Preparing .environment file"
1079
cat <<EOF > "${NETDATA_USER_CONFIG_DIR}/.environment"
1080
# Created by installer
1081
PATH="${PATH}"
@@ -1075,10 +1088,13 @@ NETDATA_GROUP="${NETDATA_GROUP}"
1088
REINSTALL_COMMAND="${REINSTALL_COMMAND}"
1089
RELEASE_CHANNEL="${RELEASE_CHANNEL}"
1090
IS_NETDATA_STATIC_BINARY="${IS_NETDATA_STATIC_BINARY}"
1078
-# This value is meant to be populated by autoupdater (if enabled)
1079
-NETDATA_TARBALL_CHECKSUM="new_installation"
1091
+NETDATA_LIB_DIR="${NETDATA_LIB_DIR}"
1092
EOF
1093
1094
+echo >&2 "Setting netdata.tarball.checksum to 'new_installation'"
1095
+cat <<EOF > "${NETDATA_LIB_DIR}/netdata.tarball.checksum"
1096
+new_installation
1097
+EOF
1098
1099
# -----------------------------------------------------------------------------
1100
echo >&2
packaging/installer/UNINSTALL.md
+1
-1
@@ -16,7 +16,7 @@ NETDATA_ADDED_TO_GROUPS="<additional groups>" # Additional groups for a user ru
16
```
17
3. Run `netdata-uninstaller.sh` as follows
18
```
19
-${NETDATA_PREFIX}/usr/libexec/netdata-uninstaller.sh --yes --env <environment_file>
19
+${NETDATA_PREFIX}/usr/libexec/netdata/netdata-uninstaller.sh --yes --env <environment_file>
20
```
21
22
Note: Existing installations may still need to download the file if it's not present.
packaging/installer/netdata-updater.sh
+12
-4
@@ -11,7 +11,7 @@
11
# - NETDATA_TARBALL_URL
12
# - NETDATA_TARBALL_CHECKSUM_URL
13
# - NETDATA_TARBALL_CHECKSUM
14
-#
14
+# - NETDATA_PREFIX / NETDATA_LIB_DIR (After 1.16.1 we will only depend on lib dir)
15
#
16
# Copyright: SPDX-License-Identifier: GPL-3.0-or-later
17
#
@@ -142,10 +142,12 @@ update() {
142
143
info "Re-installing netdata..."
144
eval "${REINSTALL_COMMAND} --dont-wait ${do_not_start}" >&3 2>&3 || fatal "FAILED TO COMPILE/INSTALL NETDATA"
145
+
146
+ # We no longer store checksum info here. but leave this so that we clean up all environment files upon next update.
147
sed -i '/NETDATA_TARBALL/d' "${ENVIRONMENT_FILE}"
146
- cat <<EOF >>"${ENVIRONMENT_FILE}"
147
-NETDATA_TARBALL_CHECKSUM="$NEW_CHECKSUM"
148
-EOF
148
+
149
+ info "Updating tarball checksum info"
150
+ echo "${NEW_CHECKSUM}" > "${NETDATA_LIB_DIR}/netdata.tarball.checksum"
151
fi
152
153
rm -rf "${tmpdir}" >&3 2>&3
@@ -159,6 +161,12 @@ EOF
161
# shellcheck source=/dev/null
162
source "${ENVIRONMENT_FILE}" || exit 1
163
164
+# We dont expect to find lib dir variable on older installations, so load this path if none found
165
+export NETDATA_LIB_DIR="${NETDATA_LIB_DIR:-${NETDATA_PREFIX}/var/lib/netdata}"
166
+
167
+# Source the tarbal checksum, if not already available from environment (for existing installations with the old logic)
168
+[[ -z "${NETDATA_TARBALL_CHECKSUM}" ]] && [[ -f ${NETDATA_LIB_DIR}/netdata.tarball.checksum ]] && NETDATA_TARBALL_CHECKSUM="$(cat "${NETDATA_LIB_DIR}/netdata.tarball.checksum")"
169
+
170
if [ "${INSTALL_UID}" != "$(id -u)" ]; then
171
fatal "You are running this script as user with uid $(id -u). We recommend to run this script as root (user with uid 0)"
172
fi