-#!/bin/bash
+#!/usr/bin/env bash
umask 022
-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
;;
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 >& "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
installed=""
errors=0
pip_install() {
- local ret x
+ local ret x msg="${1}"
+ shift
echo >&2
echo >&2
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}
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
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}"