]> arthur.barton.de Git - netdata.git/blobdiff - netdata-installer.sh
Merge pull request #924 from ktsaou/master
[netdata.git] / netdata-installer.sh
index 1a3e1a188cdcc8605e89313a41e799075c3bc0f5..d6e78681b592afb7aed7020e4ab549a3c6d87452 100755 (executable)
@@ -3,6 +3,8 @@
 # reload the user profile
 [ -f /etc/profile ] && . /etc/profile
 
+export PATH="${PATH}:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin"
+
 # fix PKG_CHECK_MODULES error
 if [ -d /usr/share/aclocal ]
 then
@@ -47,50 +49,50 @@ NETDATA_PREFIX=
 LIBS_ARE_HERE=0
 
 usage() {
-    cat <<-USAGE
+    cat <<USAGE
 
-    ${ME} <installer options>
+${ME} <installer options>
 
-    Valid <installer options> are:
+Valid <installer options> are:
 
-       --install /PATH/TO/INSTALL
+   --install /PATH/TO/INSTALL
 
-            If your give: --install /opt
-            netdata will be installed in /opt/netdata
+        If your give: --install /opt
+        netdata will be installed in /opt/netdata
 
-       --dont-start-it
+   --dont-start-it
 
-            Do not (re)start netdata.
-            Just install it.
+        Do not (re)start netdata.
+        Just install it.
 
-       --dont-wait
+   --dont-wait
 
-            Do not wait for the user to press ENTER.
-            Start immediately building it.
+        Do not wait for the user to press ENTER.
+        Start immediately building it.
 
-       --zlib-is-really-here
-       --libs-are-really-here
+   --zlib-is-really-here
+   --libs-are-really-here
 
-            If you get errors about missing zlib,
-            or libuuid but you know it is available,
-            you have a broken pkg-config.
-            Use this option to allow it continue
-            without checking pkg-config.
+        If you get errors about missing zlib,
+        or libuuid but you know it is available,
+        you have a broken pkg-config.
+        Use this option to allow it continue
+        without checking pkg-config.
 
-    Netdata will by default be compiled with gcc optimization -O3
-    If you need to pass different CFLAGS, use something like this:
+Netdata will by default be compiled with gcc optimization -O3
+If you need to pass different CFLAGS, use something like this:
 
-      CFLAGS="<gcc options>" ${ME} <installer options>
+  CFLAGS="<gcc options>" ${ME} <installer options>
 
-    For the installer to complete successfully, you will need
-    these packages installed:
+For the installer to complete successfully, you will need
+these packages installed:
 
-       gcc make autoconf automake pkg-config zlib1g-dev (or zlib-devel)
-       uuid-dev (or libuuid-devel)
+   gcc make autoconf automake pkg-config zlib1g-dev (or zlib-devel)
+   uuid-dev (or libuuid-devel)
 
-    For the plugins, you will at least need:
+For the plugins, you will at least need:
 
-       curl nodejs
+   curl nodejs
 
 USAGE
 }
@@ -172,26 +174,26 @@ do
     fi
 done
 
-cat <<-BANNER
+cat <<BANNER
 
-    Welcome to netdata!
-    Nice to see you are giving it a try!
+Welcome to netdata!
+The real-time performance monitoring system.
 
-    You are about to build and install netdata to your system.
+You are about to build and install netdata to your system.
 
-    It will be installed at these locations:
+It will be installed at these locations:
 
-      - the daemon    at ${NETDATA_PREFIX}/usr/sbin/netdata
-      - config files  at ${NETDATA_PREFIX}/etc/netdata
-      - web files     at ${NETDATA_PREFIX}/usr/share/netdata
-      - plugins       at ${NETDATA_PREFIX}/usr/libexec/netdata
-      - cache files   at ${NETDATA_PREFIX}/var/cache/netdata
-      - db files      at ${NETDATA_PREFIX}/var/lib/netdata
-      - log files     at ${NETDATA_PREFIX}/var/log/netdata
-      - pid file      at ${NETDATA_PREFIX}/var/run
+  - the daemon    at ${NETDATA_PREFIX}/usr/sbin/netdata
+  - config files  at ${NETDATA_PREFIX}/etc/netdata
+  - web files     at ${NETDATA_PREFIX}/usr/share/netdata
+  - plugins       at ${NETDATA_PREFIX}/usr/libexec/netdata
+  - cache files   at ${NETDATA_PREFIX}/var/cache/netdata
+  - db files      at ${NETDATA_PREFIX}/var/lib/netdata
+  - log files     at ${NETDATA_PREFIX}/var/log/netdata
+  - pid file      at ${NETDATA_PREFIX}/var/run
 
-    This installer allows you to change the installation path.
-    Press Control-C and run the same command with --help for help.
+This installer allows you to change the installation path.
+Press Control-C and run the same command with --help for help.
 
 BANNER
 
@@ -199,40 +201,40 @@ if [ "${UID}" -ne 0 ]
     then
     if [ -z "${NETDATA_PREFIX}" ]
         then
-        cat <<-NONROOTNOPREFIX
+        cat <<NONROOTNOPREFIX
 
-        Sorry! This will fail!
+Sorry! This will fail!
 
-        You are attempting to install netdata as non-root, but you plan to install it
-        in system paths.
+You are attempting to install netdata as non-root, but you plan to install it
+in system paths.
 
-        Please set an installation prefix, like this:
+Please set an installation prefix, like this:
 
-            $0 ${@} --install /tmp
+    $0 ${@} --install /tmp
 
-        or, run the installer as root:
+or, run the installer as root:
 
-            sudo $0 ${@}
+    sudo $0 ${@}
 
-        We suggest to install it as root, or certain data collectors will not be able
-        to work. Netdata drops root privileges when running. So, if you plan to keep
-        it, install it as root to get the full functionality.
+We suggest to install it as root, or certain data collectors will not be able
+to work. Netdata drops root privileges when running. So, if you plan to keep
+it, install it as root to get the full functionality.
 
 NONROOTNOPREFIX
         exit 1
 
     else
-        cat <<-NONROOT
+        cat <<NONROOT
 
-        IMPORTANT:
-        You are about to install netdata as a non-root user.
-        Netdata will work, but a few data collection modules that
-        require root access will fail.
+IMPORTANT:
+You are about to install netdata as a non-root user.
+Netdata will work, but a few data collection modules that
+require root access will fail.
 
-        If you installing permanently on your system, run the
-        installer like this:
+If you installing permanently on your system, run the
+installer like this:
 
-            sudo $0 ${@}
+    sudo $0 ${@}
 
 NONROOT
     fi
@@ -271,23 +273,23 @@ then
     then
         echo "Will skip autoreconf step"
     else
-        cat <<-"EOF"
+        cat <<"EOF"
 
-        -------------------------------------------------------------------------------
-        autotools 2.60 or later is required
+-------------------------------------------------------------------------------
+autotools 2.60 or later is required
 
-        Sorry, you do not seem to have autotools 2.60 or later, which is
-        required to build from the git sources of netdata.
+Sorry, you do not seem to have autotools 2.60 or later, which is
+required to build from the git sources of netdata.
 
-        You can either install a suitable version of autotools and automake
-        or download a netdata package which does not have these dependencies.
+You can either install a suitable version of autotools and automake
+or download a netdata package which does not have these dependencies.
 
-        Source packages where autotools have already been run are available
-        here:
-               https://firehol.org/download/netdata/
+Source packages where autotools have already been run are available
+here:
+       https://firehol.org/download/netdata/
 
-        The unsigned/master folder tracks the head of the git tree and released
-        packages are also available.
+The unsigned/master folder tracks the head of the git tree and released
+packages are also available.
 EOF
         exit 1
     fi
@@ -304,33 +306,33 @@ if [ ${DONOTWAIT} -eq 0 ]
 fi
 
 build_error() {
-    cat <<-EOF
+    cat <<EOF
 
-    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-    Sorry! NetData failed to build...
+Sorry! NetData failed to build...
 
-    You many need to check these:
+You many need to check these:
 
-    1. The package uuid-dev (or libuuid-devel) has to be installed.
+1. The package uuid-dev (or libuuid-devel) has to be installed.
 
-       If your system cannot find libuuid, although it is installed
-       run me with the option:  --libs-are-really-here
+   If your system cannot find libuuid, although it is installed
+   run me with the option:  --libs-are-really-here
 
-    2. The package zlib1g-dev (or zlib-devel) has to be installed.
+2. The package zlib1g-dev (or zlib-devel) has to be installed.
 
-       If your system cannot find zlib, although it is installed
-       run me with the option:  --libs-are-really-here
+   If your system cannot find zlib, although it is installed
+   run me with the option:  --libs-are-really-here
 
-    3. You need basic build tools installed, like:
+3. You need basic build tools installed, like:
 
-       gcc make autoconf automake pkg-config
+   gcc make autoconf automake pkg-config
 
-       Autoconf version 2.60 or higher is required.
+   Autoconf version 2.60 or higher is required.
 
-    If you still cannot get it to build, ask for help at github:
+If you still cannot get it to build, ask for help at github:
 
-       https://github.com/firehol/netdata/issues
+   https://github.com/firehol/netdata/issues
 
 
 EOF
@@ -849,36 +851,36 @@ fi
 # Check for KSM
 
 ksm_is_available_but_disabled() {
-    cat <<-KSM1
+    cat <<KSM1
 
-    -------------------------------------------------------------------------------
-    Memory de-duplication instructions
+-------------------------------------------------------------------------------
+Memory de-duplication instructions
 
-    You have kernel memory de-duper (called Kernel Same-page Merging,
-    or KSM) available, but it is not currently enabled.
+You have kernel memory de-duper (called Kernel Same-page Merging,
+or KSM) available, but it is not currently enabled.
 
-    To enable it run:
+To enable it run:
 
-    echo 1 >/sys/kernel/mm/ksm/run
-    echo 1000 >/sys/kernel/mm/ksm/sleep_millisecs
+echo 1 >/sys/kernel/mm/ksm/run
+echo 1000 >/sys/kernel/mm/ksm/sleep_millisecs
 
-    If you enable it, you will save 40-60% of netdata memory.
+If you enable it, you will save 40-60% of netdata memory.
 
 KSM1
 }
 
 ksm_is_not_available() {
-    cat <<-KSM2
+    cat <<KSM2
 
-    -------------------------------------------------------------------------------
-    Memory de-duplication not present in your kernel
+-------------------------------------------------------------------------------
+Memory de-duplication not present in your kernel
 
-    It seems you do not have kernel memory de-duper (called Kernel Same-page
-    Merging, or KSM) available.
+It seems you do not have kernel memory de-duper (called Kernel Same-page
+Merging, or KSM) available.
 
-    To enable it, you need a kernel built with CONFIG_KSM=y
+To enable it, you need a kernel built with CONFIG_KSM=y
 
-    If you can have it, you will save 40-60% of netdata memory.
+If you can have it, you will save 40-60% of netdata memory.
 
 KSM2
 }
@@ -898,18 +900,18 @@ fi
 
 if [ ! -s web/version.txt ]
     then
-    cat <<-VERMSG
+    cat <<VERMSG
 
-    -------------------------------------------------------------------------------
-    Version update check warning
+-------------------------------------------------------------------------------
+Version update check warning
 
-    The way you downloaded netdata, we cannot find its version. This means the
-    Update check on the dashboard, will not work.
+The way you downloaded netdata, we cannot find its version. This means the
+Update check on the dashboard, will not work.
 
-    If you want to have version update check, please re-install it
-    following the procedure in:
+If you want to have version update check, please re-install it
+following the procedure in:
 
-    https://github.com/firehol/netdata/wiki/Installation
+https://github.com/firehol/netdata/wiki/Installation
 
 VERMSG
 fi
@@ -919,29 +921,29 @@ fi
 
 if [ "${UID}" -ne 0 ]
     then
-    cat <<-SETUID_WARNING
+    cat <<SETUID_WARNING
 
-    -------------------------------------------------------------------------------
-    apps.plugin needs privileges
+-------------------------------------------------------------------------------
+apps.plugin needs privileges
 
-    Since you have installed netdata as a normal user, to have apps.plugin collect
-    all the needed data, you have to give it the access rights it needs, by running
-    either of the following sets of commands:
+Since you have installed netdata as a normal user, to have apps.plugin collect
+all the needed data, you have to give it the access rights it needs, by running
+either of the following sets of commands:
 
-    To run apps.plugin with escalated capabilities:
+To run apps.plugin with escalated capabilities:
 
-        sudo chown root:${NETDATA_USER} "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
-        sudo chmod 0750 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
-        sudo setcap cap_dac_read_search,cap_sys_ptrace+ep "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
+    sudo chown root:${NETDATA_USER} "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
+    sudo chmod 0750 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
+    sudo setcap cap_dac_read_search,cap_sys_ptrace+ep "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
 
-    or, to run apps.plugin as root:
+or, to run apps.plugin as root:
 
-        sudo chown root "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
-        sudo chmod 4755 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
+    sudo chown root "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
+    sudo chmod 4755 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
 
-    apps.plugin is performing a hard-coded function of data collection for all
-    running processes. It cannot be instructed from the netdata daemon to perform
-    any task, so it is pretty safe to do this.
+apps.plugin is performing a hard-coded function of data collection for all
+running processes. It cannot be instructed from the netdata daemon to perform
+any task, so it is pretty safe to do this.
 
 SETUID_WARNING
 fi
@@ -949,122 +951,122 @@ fi
 # -----------------------------------------------------------------------------
 # Keep un-install info
 
-cat >netdata-uninstaller.sh <<-UNINSTALL
-    #!/bin/bash
+cat >netdata-uninstaller.sh <<UNINSTALL
+#!/usr/bin/env bash
 
-    # this script will uninstall netdata
+# this script will uninstall netdata
 
-    if [ "\$1" != "--force" ]
-        then
-        echo >&2 "This script will REMOVE netdata from your system."
-        echo >&2 "Run it again with --force to do it."
-        exit 1
-    fi
-
-    echo >&2 "Stopping a possibly running netdata..."
-    for p in \$(pidof netdata); do kill \$p; done
-    sleep 2
+if [ "\$1" != "--force" ]
+    then
+    echo >&2 "This script will REMOVE netdata from your system."
+    echo >&2 "Run it again with --force to do it."
+    exit 1
+fi
 
-    deletedir() {
-        if [ ! -z "\$1" -a -d "\$1" ]
-            then
-            echo
-            echo "Deleting directory '\$1' ..."
-            rm -I -R "\$1"
-        fi
-    }
+echo >&2 "Stopping a possibly running netdata..."
+for p in \$(pidof netdata); do kill \$p; done
+sleep 2
 
-    if [ ! -z "${NETDATA_PREFIX}" -a -d "${NETDATA_PREFIX}" ]
+deletedir() {
+    if [ ! -z "\$1" -a -d "\$1" ]
         then
-        # installation prefix was given
-
-        deletedir "${NETDATA_PREFIX}"
+        echo
+        echo "Deleting directory '\$1' ..."
+        rm -I -R "\$1"
+    fi
+}
 
-    else
-        # installation prefix was NOT given
+if [ ! -z "${NETDATA_PREFIX}" -a -d "${NETDATA_PREFIX}" ]
+    then
+    # installation prefix was given
 
-        if [ -f "${NETDATA_PREFIX}/usr/sbin/netdata" ]
-            then
-            echo "Deleting ${NETDATA_PREFIX}/usr/sbin/netdata ..."
-            rm -i "${NETDATA_PREFIX}/usr/sbin/netdata"
-        fi
+    deletedir "${NETDATA_PREFIX}"
 
-        deletedir "${NETDATA_PREFIX}/etc/netdata"
-        deletedir "${NETDATA_PREFIX}/usr/share/netdata"
-        deletedir "${NETDATA_PREFIX}/usr/libexec/netdata"
-        deletedir "${NETDATA_PREFIX}/var/lib/netdata"
-        deletedir "${NETDATA_PREFIX}/var/cache/netdata"
-        deletedir "${NETDATA_PREFIX}/var/log/netdata"
-    fi
+else
+    # installation prefix was NOT given
 
-    if [ -f /etc/logrotate.d/netdata ]
+    if [ -f "${NETDATA_PREFIX}/usr/sbin/netdata" ]
         then
-        echo "Deleting /etc/logrotate.d/netdata ..."
-        rm -i /etc/logrotate.d/netdata
+        echo "Deleting ${NETDATA_PREFIX}/usr/sbin/netdata ..."
+        rm -i "${NETDATA_PREFIX}/usr/sbin/netdata"
     fi
 
-    if [ -f /etc/systemd/system/netdata.service ]
-        then
-        echo "Deleting /etc/systemd/system/netdata.service ..."
-        rm -i /etc/systemd/system/netdata.service
-    fi
+    deletedir "${NETDATA_PREFIX}/etc/netdata"
+    deletedir "${NETDATA_PREFIX}/usr/share/netdata"
+    deletedir "${NETDATA_PREFIX}/usr/libexec/netdata"
+    deletedir "${NETDATA_PREFIX}/var/lib/netdata"
+    deletedir "${NETDATA_PREFIX}/var/cache/netdata"
+    deletedir "${NETDATA_PREFIX}/var/log/netdata"
+fi
 
-    getent passwd netdata > /dev/null
-    if [ $? -eq 0 ]
-        then
-        echo
-        echo "You may also want to remove the user netdata"
-        echo "by running:"
-        echo "   userdel netdata"
-    fi
+if [ -f /etc/logrotate.d/netdata ]
+    then
+    echo "Deleting /etc/logrotate.d/netdata ..."
+    rm -i /etc/logrotate.d/netdata
+fi
 
-    getent group netdata > /dev/null
-    if [ $? -eq 0 ]
-        then
-        echo
-        echo "You may also want to remove the group netdata"
-        echo "by running:"
-        echo "   groupdel netdata"
-    fi
+if [ -f /etc/systemd/system/netdata.service ]
+    then
+    echo "Deleting /etc/systemd/system/netdata.service ..."
+    rm -i /etc/systemd/system/netdata.service
+fi
 
-    getent group docker > /dev/null
-    if [ $? -eq 0 -a "${NETDATA_ADDED_TO_DOCKER}" = "1" ]
-        then
-        echo
-        echo "You may also want to remove the netdata user from the docker group"
-        echo "by running:"
-        echo "   gpasswd -d netdata docker"
-    fi
+getent passwd netdata > /dev/null
+if [ $? -eq 0 ]
+    then
+    echo
+    echo "You may also want to remove the user netdata"
+    echo "by running:"
+    echo "   userdel netdata"
+fi
+
+getent group netdata > /dev/null
+if [ $? -eq 0 ]
+    then
+    echo
+    echo "You may also want to remove the group netdata"
+    echo "by running:"
+    echo "   groupdel netdata"
+fi
+
+getent group docker > /dev/null
+if [ $? -eq 0 -a "${NETDATA_ADDED_TO_DOCKER}" = "1" ]
+    then
+    echo
+    echo "You may also want to remove the netdata user from the docker group"
+    echo "by running:"
+    echo "   gpasswd -d netdata docker"
+fi
 
 UNINSTALL
 chmod 750 netdata-uninstaller.sh
 
 # -----------------------------------------------------------------------------
 
-cat <<-END
+cat <<END
 
 
-    -------------------------------------------------------------------------------
+-------------------------------------------------------------------------------
 
-    OK. NetData is installed and it is running.
+OK. NetData is installed and it is running.
 
-    -------------------------------------------------------------------------------
+-------------------------------------------------------------------------------
 
-    By default netdata listens on all IPs on port ${NETDATA_PORT},
-    so you can access it with:
+By default netdata listens on all IPs on port ${NETDATA_PORT},
+so you can access it with:
 
-    http://this.machine.ip:${NETDATA_PORT}/
+http://this.machine.ip:${NETDATA_PORT}/
 
-    To stop netdata, just kill it, with:
+To stop netdata, just kill it, with:
 
-      killall netdata
+  killall netdata
 
-    To start it, just run it:
+To start it, just run it:
 
-      ${NETDATA_PREFIX}/usr/sbin/netdata
+  ${NETDATA_PREFIX}/usr/sbin/netdata
 
 
-    Enjoy!
+Enjoy!
 
 END
 echo >&2 "Uninstall script generated: ./netdata-uninstaller.sh"