master
sh 102 lines 1.83 KB
Raw
1 #!/usr/bin/env bash
2 # Package tree used for installing netdata on distribution:
3 # << Debian: [9] [10] [11] >>
4
5 set -e
6
7 NON_INTERACTIVE=0
8 DONT_WAIT=0
9
10 package_tree="
11 bison
12 cmake
13 curl
14 flex
15 g++
16 gcc
17 git
18 gzip
19 libatomic1
20 libelf-dev
21 libjson-c-dev
22 liblz4-dev
23 libmnl-dev
24 libssl-dev
25 libsystemd-dev
26 libuv1-dev
27 libyaml-dev
28 make
29 pkg-config
30 python3
31 tar
32 uuid-dev
33 zlib1g-dev
34 "
35
36 usage() {
37 cat << EOF
38 OPTIONS:
39 [--dont-wait] [--non-interactive] [ ]
40 EOF
41 }
42
43 check_flags() {
44 while [ -n "${1}" ]; do
45 case "${1}" in
46 dont-wait | --dont-wait | -n)
47 DONT_WAIT=1
48 ;;
49
50 non-interactive | --non-interactive | -y)
51 NON_INTERACTIVE=1
52 ;;
53
54 help | -h | --help)
55 usage
56 exit 1
57 ;;
58 *)
59 echo >&2 "ERROR: Cannot understand option '${1}'"
60 echo >&2
61 usage
62 exit 1
63 ;;
64 esac
65 shift
66 done
67
68 if [ "${DONT_WAIT}" -eq 0 ] && [ "${NON_INTERACTIVE}" -eq 0 ]; then
69 read -r -p "Press ENTER to run it > " || exit 1
70 fi
71 }
72
73 # shellcheck disable=2068
74 check_flags ${@}
75
76 packages_to_install=
77
78 for package in $package_tree; do
79 if dpkg -s "$package" &> /dev/null; then
80 echo "Package '${package}' is installed"
81 else
82 echo "Package '${package}' is NOT installed"
83 packages_to_install="$packages_to_install $package"
84 fi
85 done
86
87 if [[ -z "$packages_to_install" ]]; then
88 echo "All required packages are already installed. Skipping .."
89 else
90 echo "packages_to_install:" "$packages_to_install"
91 opts=
92 if [ "${NON_INTERACTIVE}" -eq 1 ]; then
93 echo >&2 "Running in non-interactive mode"
94 # shellcheck disable=SC2034
95 DEBIAN_FRONTEND="noninteractive"
96 opts="${opts} -yq"
97 fi
98 echo "Running apt-get update and updating your APT caches ..."
99 apt-get update
100 # shellcheck disable=2086
101 apt-get install ${opts} $packages_to_install
102 fi