diff options
-rw-r--r-- | packaging/installer/UPDATE.md | 44 | ||||
-rwxr-xr-x | packaging/installer/kickstart.sh | 197 | ||||
-rw-r--r-- | packaging/installer/methods/kickstart.md | 1 |
3 files changed, 171 insertions, 71 deletions
diff --git a/packaging/installer/UPDATE.md b/packaging/installer/UPDATE.md index 3b75e8223e..60fcbfa9d2 100644 --- a/packaging/installer/UPDATE.md +++ b/packaging/installer/UPDATE.md @@ -17,7 +17,17 @@ or stable version. You can also [enable or disable automatic updates on an exist Before you update the Netdata Agent, check to see if your Netdata Agent is already up-to-date by clicking on the update icon in the local Agent dashboard's top navigation. This modal informs you whether your Agent needs an update or not. -![Opening the Agent's Update modal](https://user-images.githubusercontent.com/1153921/99738428-add06780-2a87-11eb-8268-0e17b689eb3f.gif) +The exact update method to use depends on the install type: + +- Installs with an install type of 'custom' usually indicate installing a third-party package through the system + package manager. To update these installs, you should update the package just like you would any other package + on your system. +- Installs with an install type starting with `binpkg` or ending with `build` or `static` can be updated using + our [regular update method](#updates-for-most-systems). +- Installs with an install type of 'oci' were created from our official Docker images, and should be updated + using our [Docker](#docker) update procedure. +- macOS users should check [our update instructions for macOS](#macos). +- Manually built installs should check [our update instructions for manual builds](#manual-installation-from-git). ## Determine which installation method you used @@ -27,29 +37,23 @@ Starting with netdata v1.33.0, you can use Netdata itself to determine the insta netdata -W buildinfo | grep 'Install type:' ``` -If this produces no output, you have an older install and will have to manually look in the Netdata config directory. -If you are not sure where your Netdata config directory is, see the [configuration doc](/docs/configure/nodes.md). In -most installations, this is `/etc/netdata`. +If you are using an older version of Netdata, or the above command produces no output, you can run our one-line +installation script in dry-run mode to attempt to determine what method to use to update by running the following +command: -Use `cd` to navigate to the Netdata config directory, then use `ls -a` to look for a file called `.install-type`. +```bash +wget -O /tmp/netdata-kickstart.sh https://my-netdata.io/kickstart.sh && sh /tmp/netdata-kickstart.sh --dry-run +``` -- If the `.install-type` file doex not exist, look for a file in the same directory called `.environment`. - - If the `.environment` file does not exist, then you have a ‘custom’ install. - - If the `.environment` file does exist, then you have either a ‘static’ or ‘build’ install. -- If the `.install-type` file does exist, check it’s contents with `cat .install-type`. - - The value of the `INSTALL_TYPE` key indicates what type of install you have. +Note that if you installed Netdata using an installation prefix, you will need to add an `--install` option +specifying that prefix to make sure it finds the existing install. -The exact update method to use depends on the install type: +If you see a line starting with `--- Would attempt to update existing installation by running the updater script +located at:`, then our [regular update method](#updates-for-most-systems) will work for you. -- Installs with an install type of 'custom' usually indicate installing a third-party package through the system - package manager. To update these installs, you should update the package just like you would any other package - on your system. -- Installs with an install type starting with `binpkg` or ending with `build` or `static` can be updated using - our [regular update method](#updates-for-most-systems). -- Installs with an install type of 'oci' were created from our official Docker images, and should be updated - using our [Docker](#docker) update procedure. -- macOS users should check [our update instructions for macOS](#macos). -- Manually built installs should check [our update instructions for manual builds](#manual-installation-from-git). +Otherwise, it should either indicate that the installation type is not supported (which probably means you either +have a `custom` instal or built Netdata manually) or indicate that it would create a new install (which means that +you either used a non-standard install path, or that you don’t actually have Netdata installed). ## Updates for most systems diff --git a/packaging/installer/kickstart.sh b/packaging/installer/kickstart.sh index ce449fd6f0..7467cda8df 100755 --- a/packaging/installer/kickstart.sh +++ b/packaging/installer/kickstart.sh @@ -16,6 +16,7 @@ START_TIME="$(date +%s)" # ====================================================================== # Defaults for environment variables +DRY_RUN=0 SELECTED_INSTALL_METHOD="none" INSTALL_TYPE="unknown" INSTALL_PREFIX="" @@ -62,6 +63,7 @@ USAGE: kickstart.sh [options] --non-interactive Do not prompt for user input. (default: prompt if there is a controlling terminal) --interactive Prompt for user input even if there is no controlling terminal. --dont-start-it Do not start the agent by default (only for static installs or local builds) + --dry-run Report what we would do with the given options on this system, but don’t actually do anything. --stable-channel Install a stable version instead of a nightly build (default: install a nightly build) --nightly-channel Install a nightly build instead of a stable version --no-updates Do not enable automatic updates (default: enable automatic updates) @@ -80,7 +82,7 @@ USAGE: kickstart.sh [options] --claim-only If there is an existing install, only try to claim it, not update it. --claim-* Specify other options for the claiming script. --no-cleanup Don't do any cleanup steps. This is intended to help with debugging the installer. - --uninstall Uninstall netdata. + --uninstall Uninstall an existing installation of Netdata. Additionally, this script may use the following environment variables: @@ -101,7 +103,7 @@ HEREDOC # Telemetry functions telemetry_event() { - if [ "${NETDATA_DISABLE_TELEMETRY}" -eq 1 ]; then + if [ "${NETDATA_DISABLE_TELEMETRY}" -eq 1 ] || [ "${DRY_RUN}" -eq 1 ]; then return 0 fi @@ -297,6 +299,10 @@ run() { info_console="[${TPUT_DIM}${dir}${TPUT_RESET}]$ " fi + if [ "${DRY_RUN}" -eq 1 ]; then + printf >&2 "%s" "Would run command:\n" + fi + { printf "%s" "${info}" escaped_print "${@}" @@ -307,9 +313,13 @@ run() { escaped_print >&2 "${@}" printf >&2 "%s\n" "${TPUT_RESET}" - "${@}" + if [ "${DRY_RUN}" -ne 1 ]; then + "${@}" + ret=$? + else + ret=0 + fi - ret=$? if [ ${ret} -ne 0 ]; then run_failed printf "%s\n" "FAILED with exit code ${ret}" >> "${run_logfile}" @@ -361,6 +371,17 @@ create_tmp_directory() { mktemp -d -t netdata-kickstart-XXXXXXXXXX } +check_for_remote_file() { + url="${1}" + if command -v curl > /dev/null 2>&1; then + curl --output /dev/null --silent --head --fail "${url}" || return 1 + elif command -v wget > /dev/null 2>&1; then + wget -S --spider "${url}" 2>&1 | grep -q 'HTTP/1.1 200 OK' || return 1 + else + fatal "I need curl or wget to proceed, but neither of them are available on this system." F0003 + fi +} + download() { url="${1}" dest="${2}" @@ -522,6 +543,11 @@ update() { updater="${ndprefix}/usr/libexec/netdata/netdata-updater.sh" if [ -x "${updater}" ]; then + if [ "${DRY_RUN}" -eq 1 ]; then + progress "Would attempt to update existing installation by running the updater script located at: ${updater}" + return 0 + fi + if run ${ROOTCMD} "${updater}" --not-running-from-cron; then progress "Updated existing install at ${ndprefix}" return 0 @@ -529,6 +555,7 @@ update() { fatal "Failed to update existing Netdata install at ${ndprefix}" F0100 fi else + warning "Could not find a usable copy of the updater script." return 1 fi } @@ -539,24 +566,40 @@ uninstall() { export INSTALL_PREFIX="${ndprefix}" + uninstaller="${INSTALL_PREFIX}/usr/libexec/netdata/netdata-uninstaller.sh" + uninstaller_url="https://raw.githubusercontent.com/netdata/netdata/master/packaging/installer/netdata-uninstaller.sh" + if [ $INTERACTIVE = 0 ]; then FLAGS="--yes --force" else FLAGS="--yes" fi - if [ -f "${INSTALL_PREFIX}/usr/libexec/netdata/netdata-uninstaller.sh" ]; then - echo "Found existing netdata-uninstaller. Running it.." - ${ROOTCMD} "${INSTALL_PREFIX}/usr/libexec/netdata/netdata-uninstaller.sh" $FLAGS + if [ -x "${uninstaller}" ]; then + if [ "${DRY_RUN}" -eq 1 ]; then + progress "Would attempt to uninstall existing install with uninstaller script found at: ${uninstaller}" + return 0 + else + progress "Found existing netdata-uninstaller. Running it.." + run ${ROOTCMD} "${uninstaller}" $FLAGS + fi else - echo "Downloading netdata-uninstaller ..." - wget https://raw.githubusercontent.com/netdata/netdata/master/packaging/installer/netdata-uninstaller.sh -O "${tmpdir}/netdata-uninstaller.sh" - chmod +x "${tmpdir}/netdata-uninstaller.sh" - ${ROOTCMD} "${tmpdir}/netdata-uninstaller.sh" $FLAGS + if [ "${DRY_RUN}" -eq 1 ]; then + progress "Would download installer script from: ${uninstaller_url}" + progress "Would attempt to uninstall existing install with downloaded uninstaller script." + return 0 + else + progress "Downloading netdata-uninstaller ..." + download "${uninstaller_url}" "${tmpdir}/netdata-uninstaller.sh" + chmod +x "${tmpdir}/netdata-uninstaller.sh" + run ${ROOTCMD} "${tmpdir}/netdata-uninstaller.sh" $FLAGS + fi fi } detect_existing_install() { + progress "Checking for existing installations of Netdata..." + if pkg_installed netdata; then ndprefix="/" else @@ -584,7 +627,6 @@ detect_existing_install() { if [ -n "${ndprefix}" ]; then typefile="${ndprefix}/etc/netdata/.install-type" - envfile="${ndprefix}/etc/netdata/.environment" if [ -r "${typefile}" ]; then ${ROOTCMD} sh -c "cat \"${typefile}\" > \"${tmpdir}/install-type\"" # shellcheck disable=SC1090,SC1091 @@ -593,6 +635,7 @@ detect_existing_install() { INSTALL_TYPE="unknown" fi + envfile="${ndprefix}/etc/netdata/.environment" if [ "${INSTALL_TYPE}" = "unknown" ] || [ "${INSTALL_TYPE}" = "custom" ]; then if [ -r "${envfile}" ]; then ${ROOTCMD} sh -c "cat \"${envfile}\" > \"${tmpdir}/environment\"" @@ -621,7 +664,6 @@ handle_existing_install() { case "${INSTALL_TYPE}" in kickstart-*|legacy-*|binpkg-*|manual-static|unknown) if [ "${INSTALL_TYPE}" = "unknown" ]; then - warning "Found an existing netdata install at ${ndprefix}, but could not determine the install type." warning "Usually this means you installed Netdata through your distribution’s regular package repositories or some other unsupported method." else @@ -763,7 +805,7 @@ confirm_install_prefix() { check_claim_opts() { # shellcheck disable=SC2235,SC2030 if [ -z "${NETDATA_CLAIM_TOKEN}" ] && [ -n "${NETDATA_CLAIM_ROOMS}" ]; then - fatal "Invalid claiming options, claim rooms may only be specified when a token and URL are specified." F0204 + fatal "Invalid claiming options, claim rooms may only be specified when a token is specified." F0204 elif [ -z "${NETDATA_CLAIM_TOKEN}" ] && [ -n "${NETDATA_CLAIM_EXTRA}" ]; then fatal "Invalid claiming options, a claiming token must be specified." F0204 elif [ "${NETDATA_DISABLE_CLOUD}" -eq 1 ] && [ -n "${NETDATA_CLAIM_TOKEN}" ]; then @@ -796,7 +838,12 @@ is_netdata_running() { } claim() { - progress "Attempting to claim agent to ${NETDATA_CLAIM_URL}" + if [ "${DRY_RUN}" -eq 1 ]; then + progress "Would attempt to claim agent to ${NETDATA_CLAIM_URL}" + else + progress "Attempting to claim agent to ${NETDATA_CLAIM_URL}" + fi + if [ -z "${INSTALL_PREFIX}" ] || [ "${INSTALL_PREFIX}" = "/" ]; then NETDATA_CLAIM_PATH=/usr/sbin/netdata-claim.sh elif [ "${INSTALL_PREFIX}" = "/opt/netdata" ]; then @@ -805,12 +852,22 @@ claim() { NETDATA_CLAIM_PATH="${INSTALL_PREFIX}/netdata/usr/sbin/netdata-claim.sh" fi + claim_opts="-token=${NETDATA_CLAIM_TOKEN} -url=${NETDATA_CLAIM_URL}" + + if [ -n "${NETDATA_CLAIM_ROOMS}" ]; then + claim_opts="${claim_opts} -rooms=${NETDATA_CLAIM_ROOMS}" + fi + if ! is_netdata_running; then - NETDATA_CLAIM_EXTRA="${NETDATA_CLAIM_EXTRA} -daemon-not-running" + claim_opts="${claim_opts} -daemon-not-running" + fi + + if [ -n "${NETDATA_CLAIM_EXTRA}" ]; then + claim_opts="${claim_opts} ${NETDATA_CLAIM_EXTRA}" fi # shellcheck disable=SC2086 - if ${ROOTCMD} "${NETDATA_CLAIM_PATH}" -token="${NETDATA_CLAIM_TOKEN}" -rooms="${NETDATA_CLAIM_ROOMS}" -url="${NETDATA_CLAIM_URL}" ${NETDATA_CLAIM_EXTRA}; then + if run ${ROOTCMD} "${NETDATA_CLAIM_PATH}" ${claim_opts}; then progress "Successfully claimed node" else warning "Unable to claim node, you must do so manually." @@ -870,10 +927,10 @@ check_special_native_deps() { progress "Checking for libuv availability." # shellcheck disable=SC2086 if ${pm_cmd} search ${interactive_opts} -v libuv | grep -q "No matches found"; then - progress "libv not found, checking for EPEL availability." + progress "libuv not found, checking for EPEL availability." # shellcheck disable=SC2086 if ${pm_cmd} search ${interactive_opts} -v epel-release | grep -q "No matches found"; then - warning "Unable to find a suitable source for libuv, cannot install on this system." + warning "Unable to find a suitable source for libuv, cannot install using native packages on this system." return 1 else progress "EPEL is available, attempting to install so that required dependencies are available." @@ -896,7 +953,11 @@ try_package_install() { return 1 fi - progress "Attempting to install using native packages..." + if [ "${DRY_RUN}" -eq 1 ]; then + progress "Would attempt to install using native packages..." + else + progress "Attempting to install using native packages..." + fi if [ "${RELEASE_CHANNEL}" = "nightly" ]; then release="-edge" @@ -1010,14 +1071,17 @@ try_package_install() { repoconfig_url="${REPOCONFIG_URL_PREFIX}/${repo_prefix}/${repoconfig_file}/download.${pkg_type}" if ! pkg_installed "${repoconfig_name}"; then - progress "Downloading repository configuration package." - if ! download "${repoconfig_url}" "${tmpdir}/${repoconfig_file}"; then - warning "Failed to download repository configuration package." + progress "Checking for availability of repository configuration package." + if ! check_for_remote_file "${repoconfig_url}"; then + warning "No repository configuration package available for ${DISTRO} ${SYSVERSION}." return 2 fi + if ! download "${repoconfig_url}" "${tmpdir}/${repoconfig_file}"; then + fatal "Failed to download repository configuration package." F0209 + fi + if [ -n "${needs_early_refresh}" ]; then - progress "Updating repository metadata." # shellcheck disable=SC2086 if ! run ${ROOTCMD} env ${env} ${pm_cmd} ${repo_subcmd} ${repo_update_opts}; then warning "Failed to refresh repository metadata." @@ -1025,7 +1089,6 @@ try_package_install() { fi fi - progress "Installing repository configuration package." # shellcheck disable=SC2086 if ! run ${ROOTCMD} env ${env} ${pm_cmd} install ${pkg_install_opts} "${tmpdir}/${repoconfig_file}"; then warning "Failed to install repository configuration package." @@ -1033,7 +1096,6 @@ try_package_install() { fi if [ -n "${repo_subcmd}" ]; then - progress "Updating repository metadata." # shellcheck disable=SC2086 if ! run ${ROOTCMD} env ${env} ${pm_cmd} ${repo_subcmd} ${repo_update_opts}; then fatal "Failed to update repository metadata." F0205 @@ -1044,7 +1106,7 @@ try_package_install() { fi if ! check_special_native_deps; then - warning "Could not find secondary dependencies ${DISTRO} on ${SYSARCH}." + warning "Could not find secondary dependencies for ${DISTRO} on ${SYSARCH}." if [ -z "${NO_CLEANUP}" ]; then progress "Attempting to uninstall repository configuration package." # shellcheck disable=SC2086 @@ -1053,7 +1115,6 @@ try_package_install() { return 2 fi - progress "Checking for usable Netdata package." if ! netdata_avail_check "${DISTRO_COMPAT_NAME}"; then warning "Could not find a usable native package for ${DISTRO} on ${SYSARCH}." if [ -z "${NO_CLEANUP}" ]; then @@ -1069,7 +1130,6 @@ try_package_install() { run ${ROOTCMD} touch "/etc/netdata/.opt-out-from-anonymous-statistics" fi - progress "Installing Netdata package." # shellcheck disable=SC2086 if ! run ${ROOTCMD} env ${env} ${pm_cmd} install ${pkg_install_opts} netdata; then warning "Failed to install Netdata package." @@ -1098,19 +1158,32 @@ set_static_archive_urls() { try_static_install() { set_static_archive_urls "${RELEASE_CHANNEL}" - progress "Downloading static netdata binary: ${NETDATA_STATIC_ARCHIVE_URL}" + if [ "${DRY_RUN}" -eq 1 ]; then + progress "Would attempt to install using static build..." + else + progress "Attempting to install using static build..." + fi - if ! download "${NETDATA_STATIC_ARCHIVE_URL}" "${tmpdir}/netdata-${SYSARCH}-latest.gz.run"; then - warning "Unable to download static build archive for ${SYSARCH}." + # Check status code first, so that we can provide nicer fallback for dry runs. + if ! check_for_remote_file "${NETDATA_STATIC_ARCHIVE_URL}"; then + warning "No static build available for ${SYSARCH} CPUs." return 2 fi + if ! download "${NETDATA_STATIC_ARCHIVE_URL}" "${tmpdir}/netdata-${SYSARCH}-latest.gz.run"; then + fatal "Unable to download static build archive for ${SYSARCH}." F0208 + fi + if ! download "${NETDATA_STATIC_ARCHIVE_CHECKSUM_URL}" "${tmpdir}/sha256sum.txt"; then fatal "Unable to fetch checksums to verify static build archive." F0206 fi - if ! grep "netdata-${SYSARCH}-latest.gz.run" "${tmpdir}/sha256sum.txt" | safe_sha256sum -c - > /dev/null 2>&1; then - fatal "Static binary checksum validation failed. Usually this is a result of an older copy of the file being cached somewhere upstream and can be resolved by retrying in an hour." F0207 + if [ "${DRY_RUN}" -eq 1 ]; then + progress "Would validate SHA256 checksum of downloaded static build archive." + else + if ! grep "netdata-${SYSARCH}-latest.gz.run" "${tmpdir}/sha256sum.txt" | safe_sha256sum -c - > /dev/null 2>&1; then + fatal "Static binary checksum validation failed. Usually this is a result of an older copy of the file being cached somewhere upstream and can be resolved by retrying in an hour." F0207 + fi fi if [ "${INTERACTIVE}" -eq 0 ]; then @@ -1125,18 +1198,20 @@ try_static_install() { return 2 fi + if [ "${DRY_RUN}" -ne 1 ]; then install_type_file="/opt/netdata/etc/netdata/.install-type" - if [ -f "${install_type_file}" ]; then - ${ROOTCMD} sh -c "cat \"${install_type_file}\" > \"${tmpdir}/install-type\"" - ${ROOTCMD} chown "$(id -u)":"$(id -g)" "${tmpdir}/install-type" - # shellcheck disable=SC1090,SC1091 - . "${tmpdir}/install-type" - cat > "${tmpdir}/install-type" <<- EOF + if [ -f "${install_type_file}" ]; then + ${ROOTCMD} sh -c "cat \"${install_type_file}\" > \"${tmpdir}/install-type\"" + ${ROOTCMD} chown "$(id -u)":"$(id -g)" "${tmpdir}/install-type" + # shellcheck disable=SC1090,SC1091 + . "${tmpdir}/install-type" + cat > "${tmpdir}/install-type" <<- EOF INSTALL_TYPE='kickstart-static' PREBUILT_ARCH='${PREBUILT_ARCH}' EOF - ${ROOTCMD} chown netdata:netdata "${tmpdir}/install-type" - ${ROOTCMD} cp "${tmpdir}/install-type" "${install_type_file}" + ${ROOTCMD} chown netdata:netdata "${tmpdir}/install-type" + ${ROOTCMD} cp "${tmpdir}/install-type" "${install_type_file}" + fi fi } @@ -1162,13 +1237,16 @@ install_local_build_dependencies() { return 1 fi - progress "Fetching script to detect required packages..." download "${PACKAGES_SCRIPT}" "${tmpdir}/install-required-packages.sh" - if [ ! -s "${tmpdir}/install-required-packages.sh" ]; then + if [ ! -s "${tmpdir}/install-required-packages.sh" ] && [ "${DRY_RUN}" -ne 1 ]; then warning "Downloaded dependency installation script is empty." else - progress "Running downloaded script to detect required packages..." + if [ "${DRY_RUN}" -eq 1 ]; then + progress "Would run downloaded script to install required build dependencies..." + else + progress "Running downloaded script to install required build dependencies..." + fi if [ "${INTERACTIVE}" -eq 0 ]; then opts="--dont-wait --non-interactive" @@ -1188,7 +1266,11 @@ install_local_build_dependencies() { } build_and_install() { - progress "Building netdata" + if [ "${DRY_RUN}" -eq 1 ]; then + progress "Would attempt to build netdata..." + else + progress "Building netdata..." + fi echo "INSTALL_TYPE='kickstart-build'" > system/.install-type @@ -1226,6 +1308,12 @@ build_and_install() { } try_build_install() { + if [ "${DRY_RUN}" -eq 1 ]; then + progress "Would attempt to install by building locally..." + else + progress "Attempting to install by building locally..." + fi + if ! install_local_build_dependencies; then return 1 fi @@ -1235,15 +1323,21 @@ try_build_install() { download "${NETDATA_SOURCE_ARCHIVE_CHECKSUM_URL}" "${tmpdir}/sha256sum.txt" download "${NETDATA_SOURCE_ARCHIVE_URL}" "${tmpdir}/netdata-latest.tar.gz" - if ! grep netdata-latest.tar.gz "${tmpdir}/sha256sum.txt" | safe_sha256sum -c - > /dev/null 2>&1; then - fatal "Tarball checksum validation failed. Usually this is a result of an older copy of the file being cached somewhere upstream and can be resolved by retrying in an hour." F0005 + if [ "${DRY_RUN}" -eq 1 ]; then + progress "Would validate SHA256 checksum of downloaded source archive." + else + if ! grep netdata-latest.tar.gz "${tmpdir}/sha256sum.txt" | safe_sha256sum -c - > /dev/null 2>&1; then + fatal "Tarball checksum validation failed. Usually this is a result of an older copy of the file being cached somewhere upstream and can be resolved by retrying in an hour." F0005 + fi fi run tar -xf "${tmpdir}/netdata-latest.tar.gz" -C "${tmpdir}" rm -rf "${tmpdir}/netdata-latest.tar.gz" > /dev/null 2>&1 - cd "$(find "${tmpdir}" -mindepth 1 -maxdepth 1 -type d -name netdata-)" || fatal "Cannot cd to netdata source tree" F0006 + if [ "${DRY_RUN}" -ne 1 ]; then + cd "$(find "${tmpdir}" -mindepth 1 -maxdepth 1 -type d -name netdata-)" || fatal "Cannot cd to netdata source tree" F0006 + fi - if [ -x netdata-installer.sh ]; then + if [ -x netdata-installer.sh ] || [ "${DRY_RUN}" -eq 1 ]; then build_and_install || return 1 else # This case is needed because some platforms produce an extra directory on the source tarball extraction. @@ -1377,6 +1471,7 @@ while [ -n "${1}" ]; do "--no-cleanup") NO_CLEANUP=1 ;; "--dont-wait"|"--non-interactive") INTERACTIVE=0 ;; "--interactive") INTERACTIVE=1 ;; + "--dry-run") DRY_RUN=1 ;; "--stable-channel") RELEASE_CHANNEL="stable" ;; "--no-updates") NETDATA_AUTO_UPDATES=0 ;; "--auto-update") NETDATA_AUTO_UPDATES="1" ;; @@ -1473,7 +1568,7 @@ fi tmpdir="$(create_tmp_directory)" progress "Using ${tmpdir} as a temporary directory." -cd "${tmpdir}" || exit 1 +cd "${tmpdir}" || fatal "Failed to change current working directory to ${tmpdir}." F000A handle_existing_install diff --git a/packaging/installer/methods/kickstart.md b/packaging/installer/methods/kickstart.md index 0c39a9455f..6256411755 100644 --- a/packaging/installer/methods/kickstart.md +++ b/packaging/installer/methods/kickstart.md @@ -48,6 +48,7 @@ The `kickstart.sh` script accepts a number of optional parameters to control how - `--non-interactive`: Don’t prompt for anything and assume yes whenever possible, overriding any automatic detection of an interactive run. - `--interactive`: Act as if running interactively, even if automatic detection indicates a run is non-interactive. - `--dont-wait`: Synonym for `--non-interactive` +- `--dry-run`: Show what the installer would do, but don’t actually do any of it. - `--dont-start-it`: Don’t auto-start the daemon after installing. This parameter is not guaranteed to work. - `--nightly-channel`: Use a nightly build instead of a stable release (this is the default). - `--stable-channel`: Use a stable release instead of a nightly build. |