master
sh 111 lines 2.06 KB
Raw
1 #!/bin/sh
2 # Package tree used for installing netdata on distribution:
3 # << Alpine: [3.12] [3.13] [3.14] [3.15] [edge] >>
4
5 set -e
6
7 NON_INTERACTIVE=0
8 DONT_WAIT=0
9
10 package_tree="
11 alpine-sdk
12 bison
13 cmake
14 coreutils
15 curl
16 elfutils-dev
17 flex
18 g++
19 gcc
20 git
21 gzip
22 json-c-dev
23 libatomic
24 libmnl-dev
25 libuv-dev
26 lz4-dev
27 make
28 openssl-dev
29 pkgconfig
30 python3
31 tar
32 util-linux-dev
33 yaml-dev
34 zlib-dev
35 "
36
37 usage() {
38 cat << EOF
39 OPTIONS:
40 [--dont-wait] [--non-interactive] [ ]
41 EOF
42 }
43
44 check_flags() {
45 while [ -n "${1}" ]; do
46 case "${1}" in
47 dont-wait | --dont-wait | -n)
48 DONT_WAIT=1
49 ;;
50
51 non-interactive | --non-interactive | -y)
52 NON_INTERACTIVE=1
53 ;;
54
55 help | -h | --help)
56 usage
57 exit 1
58 ;;
59 *)
60 echo >&2 "ERROR: Cannot understand option '${1}'"
61 echo >&2
62 usage
63 exit 1
64 ;;
65 esac
66 shift
67 done
68
69 if [ "${DONT_WAIT}" -eq 0 ] && [ "${NON_INTERACTIVE}" -eq 0 ]; then
70 printf "Press ENTER to run it > "
71 read -r || exit 1
72 fi
73 }
74
75 # shellcheck disable=2068
76 check_flags ${@}
77
78 packages_to_install=
79
80 handle_old_alpine() {
81 version="$(grep VERSION_ID /etc/os-release | cut -f 2 -d '=')"
82 major="$(echo "${version}" | cut -f 1 -d '.')"
83 minor="$(echo "${version}" | cut -f 2 -d '.')"
84
85 if [ "${major}" -le 3 ] && [ "${minor}" -le 16 ]; then
86 package_tree="$(echo "${package_tree}" | sed 's/musl-fts-dev/fts-dev/')"
87 fi
88 }
89
90 for package in $package_tree; do
91 if apk -e info "$package" > /dev/null 2>&1 ; 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="--force-broken-world"
104 if [ "${NON_INTERACTIVE}" -eq 1 ]; then
105 echo >&2 "Running in non-interactive mode"
106 else
107 opts="${opts} -i"
108 fi
109 # shellcheck disable=SC2086
110 apk add ${opts} $packages_to_install
111 fi