master
sh 100 lines 1.86 KB
Raw
1 #!/usr/bin/env bash
2 # Package tree used for installing netdata on distribution:
3 # << Ubuntu: [18.04] [20.04] [20.10] [21.04] [21.10] >> | << Linux Mint >>
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 usage() {
36 cat << EOF
37 OPTIONS:
38 [--dont-wait] [--non-interactive] [ ]
39 EOF
40 }
41
42 check_flags() {
43 while [ -n "${1}" ]; do
44 case "${1}" in
45 dont-wait | --dont-wait | -n)
46 DONT_WAIT=1
47 ;;
48
49 non-interactive | --non-interactive | -y)
50 NON_INTERACTIVE=1
51 ;;
52
53 help | -h | --help)
54 usage
55 exit 1
56 ;;
57 *)
58 echo >&2 "ERROR: Cannot understand option '${1}'"
59 echo >&2
60 usage
61 exit 1
62 ;;
63 esac
64 shift
65 done
66
67 if [ "${DONT_WAIT}" -eq 0 ] && [ "${NON_INTERACTIVE}" -eq 0 ]; then
68 read -r -p "Press ENTER to run it > " || exit 1
69 fi
70 }
71
72 # shellcheck disable=SC2068
73 check_flags ${@}
74
75 packages_to_install=
76
77 for package in $package_tree; do
78 if dpkg -s "$package" &> /dev/null; then
79 echo "Package '${package}' is installed"
80 else
81 echo "Package '${package}' is NOT installed"
82 packages_to_install="$packages_to_install $package"
83 fi
84 done
85
86 if [[ -z "$packages_to_install" ]]; then
87 echo "All required packages are already installed. Skipping .."
88 else
89 echo "packages_to_install:" "$packages_to_install"
90 opts=
91 if [ "${NON_INTERACTIVE}" -eq 1 ]; then
92 echo >&2 "Running in non-interactive mode"
93 export DEBIAN_FRONTEND="noninteractive"
94 opts="${opts} -yq"
95 fi
96 echo "Running apt-get update and updating your APT caches ..."
97 apt-get update
98 # shellcheck disable=SC2086
99 apt-get install ${opts} $packages_to_install
100 fi