master
sh 110 lines 1.96 KB
Raw
1 #!/usr/bin/env bash
2 # Package tree used for installing netdata on distribution:
3 # << Fedora: [24->38] >>
4
5 set -e
6
7 NON_INTERACTIVE=0
8 DONT_WAIT=0
9
10 os_version() {
11 if [[ -f /etc/os-release ]]; then
12 # shellcheck disable=SC2002
13 cat /etc/os-release | grep VERSION_ID | cut -d'=' -f2
14 else
15 echo "Error: Cannot determine OS version!"
16 exit 1
17 fi
18 }
19
20 declare -a package_tree=(
21 bison
22 cmake
23 curl
24 elfutils-libelf-devel
25 findutils
26 flex
27 gcc
28 gcc-c++
29 git
30 gzip
31 json-c-devel
32 libatomic
33 libmnl-devel
34 libuuid-devel
35 libuv-devel
36 libyaml-devel
37 lz4-devel
38 make
39 openssl-devel
40 pkgconfig
41 python3
42 systemd-devel
43 tar
44 zlib-devel
45 )
46
47 usage() {
48 cat << EOF
49 OPTIONS:
50 [--dont-wait] [--non-interactive] [ ]
51 EOF
52 }
53
54 check_flags() {
55 while [ -n "${1}" ]; do
56 case "${1}" in
57 dont-wait | --dont-wait | -n)
58 DONT_WAIT=1
59 ;;
60
61 non-interactive | --non-interactive | -y)
62 NON_INTERACTIVE=1
63 ;;
64
65 help | -h | --help)
66 usage
67 exit 1
68 ;;
69 *)
70 echo >&2 "ERROR: Cannot understand option '${1}'"
71 echo >&2
72 usage
73 exit 1
74 ;;
75 esac
76 shift
77 done
78
79 if [ "${DONT_WAIT}" -eq 0 ] && [ "${NON_INTERACTIVE}" -eq 0 ]; then
80 read -r -p "Press ENTER to run it > " || exit 1
81 fi
82 }
83
84 # shellcheck disable=SC2068
85 check_flags ${@}
86
87 packages_to_install=
88
89 # shellcheck disable=SC2068
90 for package in ${package_tree[@]}; do
91 if rpm -q "$package" &> /dev/null; then
92 echo "Package '${package}' is installed"
93 else
94 echo "Package '$package' is NOT installed"
95 packages_to_install="$packages_to_install $package"
96 fi
97 done
98
99 if [[ -z $packages_to_install ]]; then
100 echo "All required packages are already installed. Skipping .."
101 else
102 echo "packages_to_install:" "${packages_to_install[@]}"
103 opts=
104 if [ "${NON_INTERACTIVE}" -eq 1 ]; then
105 echo >&2 "Running in non-interactive mode"
106 opts="-y"
107 fi
108 # shellcheck disable=SC2068
109 dnf install ${opts} ${packages_to_install[@]}
110 fi