]> arthur.barton.de Git - netdata.git/blobdiff - python.d/python-modules-installer.sh.in
fail2ban_plugin: parse both conf_path and conf_dir/; regex update
[netdata.git] / python.d / python-modules-installer.sh.in
old mode 100755 (executable)
new mode 100644 (file)
index 0fb8ba8..18f14f1
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
 umask 022
 
@@ -30,6 +30,7 @@ do
 
     -h|--help)
         echo "${0} [--dir netdata-python.d-path] [--system]"
+        echo "Please make sure you have installed packages: python-pip (or python3-pip) python-dev libyaml-dev libmysqlclient-dev"
         exit 0
         ;;
 
@@ -56,14 +57,16 @@ then
     pv=3
     pip="$(which pip3 2>/dev/null)"
 else
-    echo >&2 "Cannot detect python version"
+    echo >&2 "Cannot detect python version. Is python installed?"
     exit 1
 fi
 
 [ -z "${pip}" ] && pip="$(which pip 2>/dev/null)"
 if [ -z "${pip}" ]
 then
-    echo >&2 "pip command is required to install python v${pv} modules"
+    echo >&2 "pip command is required to install python v${pv} modules."
+    [ "${pv}" = "2" ] && echo >&2 "Please install python-pip."
+    [ "${pv}" = "3" ] && echo >&2 "Please install python3-pip."
     exit 1
 fi
 
@@ -83,7 +86,8 @@ failed=""
 installed=""
 errors=0
 pip_install() {
-    local ret x
+    local ret x msg="${1}"
+    shift
 
     echo >&2
     echo >&2
@@ -102,16 +106,24 @@ pip_install() {
             ret=$?
         fi
         [ ${ret} -eq 0 ] && break
-        echo >&2 "failed to install: ${x}"
+        echo >&2 "failed to install: ${x}. ${msg}"
     done
 
     if [ ${ret} -ne 0 ]
     then
-        echo >&2 "ERROR: could not install any of: ${*}"
+        echo >&2
+        echo >&2
+        echo >&2 "FAILED: could not install any of: ${*}. ${msg}"
+        echo >&2
+        echo >&2
         errors=$(( errors + 1 ))
         failed="${failed}|${*}"
     else
+        echo >&2
+        echo >&2
         echo >&2 "SUCCESS: we have: ${x}"
+        echo >&2
+        echo >&2
         installed="${installed} ${x}"
     fi
     return ${ret}
@@ -119,11 +131,11 @@ pip_install() {
 
 if [ "${pv}" = "2" ]
 then
-    pip_install pyyaml yaml
-    pip_install mysqlclient mysql-python pymysql
+    pip_install "is libyaml-dev and python-dev installed?" pyyaml
+    pip_install "is libmysqlclient-dev and python-dev installed?" mysqlclient mysql-python pymysql
 else
-    pip_install yaml pyyaml
-    pip_install mysql-python mysqlclient pymysql
+    pip_install "is libyaml-dev and python-dev installed?" pyyaml
+    pip_install "is libmysqlclient-dev and python-dev installed?" mysql-python mysqlclient pymysql
 fi
 
 echo >&2
@@ -131,6 +143,14 @@ echo >&2
 if [ ${errors} -ne 0 ]
 then
     echo >&2 "Failed to install ${errors} modules: ${failed}"
+    if [ ! -z "${target}" ]
+    then
+               echo >&2
+               echo >&2 "If you are getting errors during cleanup from pip, there is a known bug"
+               echo >&2 "in certain versions of pip that prevents installing packages local to an"
+               echo >&2 "application. To install them system-wide please run:"
+               echo >&2 "$0 --system"
+       fi
     exit 1
 else
     echo >&2 "All done. We have: ${installed}"