@cryptotaxi247 / netdata-1 / commits / b554a78c9

add existing OS dependencies and add fedora/rockylinux scripts (#11963)

maneamarius committed Feb 7, 2022 at 13:00 UTC b554a78c99ec1d51d726f1d7974c75703b009f7f
12 files changed +1451
packaging/installer/dependencies/alpine.sh
+99
@@ -0,0 +1,99 @@
1 +#!/usr/bin/env bash
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 + git
13 + gcc
14 + g++
15 + automake
16 + autoconf
17 + cmake
18 + make
19 + libtool
20 + pkgconfig
21 + tar
22 + curl
23 + gzip
24 + netcat-openbsd
25 + libuv-dev
26 + lz4-dev
27 + openssl-dev
28 + elfutils-dev
29 + python3
30 + zlib-dev
31 + util-linux-dev
32 + libmnl-dev
33 + json-c-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 apk -e info "$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="--force-broken-world"
92 + if [ "${NON_INTERACTIVE}" -eq 1 ]; then
93 + echo >&2 "Running in non-interactive mode"
94 + else
95 + opts="${opts} -i"
96 + fi
97 + # shellcheck disable=SC2086
98 + apk add ${opts} $packages_to_install
99 +fi
packaging/installer/dependencies/arch.sh
+101
@@ -0,0 +1,101 @@
1 +#!/usr/bin/env bash
2 +# Package tree used for installing netdata on distribution:
3 +# << ArchLinux: [base] [base-devel] >> | << Manjaro >>
4 +
5 +set -e
6 +
7 +NON_INTERACTIVE=0
8 +DONT_WAIT=0
9 +
10 +declare -a package_tree=(
11 + gcc
12 + make
13 + autoconf
14 + autoconf-archive
15 + autogen
16 + automake
17 + libtool
18 + cmake
19 + gnu-netcat
20 + zlib
21 + util-linux
22 + libmnl
23 + json-c
24 + libuv
25 + lz4
26 + openssl
27 + judy
28 + libelf
29 + git
30 + pkgconfig
31 + tar
32 + curl
33 + gzip
34 + python3
35 + binutils
36 +)
37 +
38 +usage() {
39 + cat << EOF
40 +OPTIONS:
41 +[--dont-wait] [--non-interactive] [ ]
42 +EOF
43 +}
44 +
45 +check_flags() {
46 + while [ -n "${1}" ]; do
47 + case "${1}" in
48 + dont-wait | --dont-wait | -n)
49 + DONT_WAIT=1
50 + ;;
51 +
52 + non-interactive | --non-interactive | -y)
53 + NON_INTERACTIVE=1
54 + ;;
55 +
56 + help | -h | --help)
57 + usage
58 + exit 1
59 + ;;
60 + *)
61 + echo >&2 "ERROR: Cannot understand option '${1}'"
62 + echo >&2
63 + usage
64 + exit 1
65 + ;;
66 + esac
67 + shift
68 + done
69 +
70 + if [ "${DONT_WAIT}" -eq 0 ] && [ "${NON_INTERACTIVE}" -eq 0 ]; then
71 + read -r -p "Press ENTER to run it > " || exit 1
72 + fi
73 +}
74 +
75 +# shellcheck disable=SC2068
76 +check_flags ${@}
77 +
78 +packages_to_install=
79 +
80 +# shellcheck disable=SC2068
81 +for package in ${package_tree[@]}; do
82 + if pacman -Qn "$package" &> /dev/null; then
83 + echo "Package '${package}' is installed"
84 + else
85 + echo "Package '$package' is NOT installed"
86 + packages_to_install="$packages_to_install $package"
87 + fi
88 +done
89 +
90 +if [[ -z $packages_to_install ]]; then
91 + echo "All required packages are already installed. Skipping .."
92 +else
93 + echo "packages_to_install: " "${packages_to_install[@]}"
94 + opts=
95 + if [ "${NON_INTERACTIVE}" -eq 1 ]; then
96 + echo >&2 "Running in non-interactive mode"
97 + opts="--noconfirm"
98 + fi
99 + # shellcheck disable=SC2068
100 + pacman -Sy ${opts} ${packages_to_install[@]}
101 +fi
packaging/installer/dependencies/centos.sh
+185
@@ -0,0 +1,185 @@
1 +#!/usr/bin/env bash
2 +# Package tree used for installing netdata on distribution:
3 +# << CentOS: [7] [8] >>
4 +
5 +set -e
6 +
7 +declare -a package_tree=(
8 + gcc
9 + gcc-c++
10 + make
11 + autoconf
12 + autoconf-archive
13 + autogen
14 + automake
15 + libtool
16 + pkgconfig
17 + cmake
18 + nmap-ncat
19 + zlib-devel
20 + libuuid-devel
21 + libmnl-devel
22 + json-c-devel
23 + libuv-devel
24 + lz4-devel
25 + openssl-devel
26 + python3
27 + elfutils-libelf-devel
28 + git
29 + tar
30 + curl
31 + gzip
32 +)
33 +
34 +os_version() {
35 + if [[ -f /etc/os-release ]]; then
36 + # shellcheck disable=SC2002
37 + cat /etc/os-release | grep VERSION_ID | cut -d'=' -f2 | cut -d'"' -f2
38 + else
39 + echo "Erorr: Cannot determine OS version!"
40 + exit 1
41 + fi
42 +}
43 +
44 +prompt() {
45 + if [[ "${NON_INTERACTIVE}" == "1" ]]; then
46 + echo >&2 "Running in non-interactive mode, assuming yes (y)"
47 + echo >&2 " > Would have prompted for ${1} ..."
48 + return 0
49 + fi
50 +
51 + while true; do
52 + read -r -p "${1} [y/n] " yn
53 + case $yn in
54 + [Yy]*) return 0 ;;
55 + [Nn]*) return 1 ;;
56 + *) echo >&2 "Please answer with yes (y) or no (n)." ;;
57 + esac
58 + done
59 +}
60 +
61 +usage() {
62 + cat << EOF
63 +OPTIONS:
64 +[--dont-wait] [--non-interactive] [ ]
65 +EOF
66 +}
67 +
68 +check_flags() {
69 + while [ -n "${1}" ]; do
70 + case "${1}" in
71 + dont-wait | --dont-wait | -n)
72 + DONT_WAIT=1
73 + ;;
74 +
75 + non-interactive | --non-interactive | -y)
76 + NON_INTERACTIVE=1
77 + ;;
78 +
79 + help | -h | --help)
80 + usage
81 + exit 1
82 + ;;
83 + *)
84 + echo >&2 "ERROR: Cannot understand option '${1}'"
85 + echo >&2
86 + usage
87 + exit 1
88 + ;;
89 + esac
90 + shift
91 + done
92 +
93 + if [[ "${DONT_WAIT}" == "0" ]] && [[ "${NON_INTERACTIVE}" == "0" ]]; then
94 + read -r -p "Press ENTER to run it > " || exit 1
95 + fi
96 +}
97 +
98 +validate_tree_centos() {
99 + local opts=
100 + export local package_manager=
101 + if [[ "${NON_INTERACTIVE}" == "1" ]]; then
102 + echo >&2 "Running in non-interactive mode"
103 + opts="-y"
104 + fi
105 +
106 + echo >&2 " > CentOS Version: $(os_version) ..."
107 +
108 + if [[ $(os_version) =~ ^8(\..*)?$ ]]; then
109 + package_manager=dnf
110 + echo >&2 " > Checking for config-manager ..."
111 + if ! dnf config-manager --help &> /dev/null; then
112 + if prompt "config-manager not found, shall I install it?"; then
113 + dnf ${opts} install 'dnf-command(config-manager)'
114 + fi
115 + fi
116 +
117 + echo >&2 " > Checking for PowerTools ..."
118 + if ! dnf repolist | grep PowerTools; then
119 + if prompt "PowerTools not found, shall I install it?"; then
120 + dnf ${opts} config-manager --set-enabled powertools || enable_powertools_repo
121 + fi
122 + fi
123 +
124 + echo >&2 " > Updating libarchive ..."
125 + dnf ${opts} install libarchive
126 +
127 + echo >&2 " > Installing Judy-devel directly ..."
128 + dnf ${opts} install http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/Judy-devel-1.0.5-18.module_el8.3.0+757+d382997d.x86_64.rpm
129 + dnf makecache --refresh
130 +elif [[ $(os_version) =~ ^7(\..*)?$ ]]; then
131 + package_manager=yum
132 + echo >&2 " > Checking for EPEL ..."
133 + if ! rpm -qa | grep epel-release > /dev/null; then
134 + if prompt "EPEL not found, shall I install it?"; then
135 + yum ${opts} install epel-release
136 + fi
137 + fi
138 + yum makecache
139 + fi
140 +}
141 +
142 +enable_powertools_repo() {
143 + if ! dnf repolist | grep -q powertools; then
144 + cat > /etc/yum.repos.d/powertools.repo <<-EOF
145 + [powertools]
146 + name=CentOS Linux \$releasever - PowerTools
147 + mirrorlist=http://mirrorlist.centos.org/?release=\$releasever&arch=\$basearch&repo=PowerTools&infra=\$infra
148 + #baseurl=http://mirror.centos.org/\$contentdir/\$releasever/PowerTools/\$basearch/os/
149 + gpgcheck=1
150 + enabled=1
151 + gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
152 +EOF
153 + else
154 + echo "Something went wrong!"
155 + exit 1
156 + fi
157 +}
158 +
159 +# shellcheck disable=SC2068
160 +check_flags ${@}
161 +validate_tree_centos
162 +
163 +packages_to_install=
164 +
165 +for package in "${package_tree[@]}"; do
166 + if rpm -q "$package" &> /dev/null; then
167 + echo "Package '${package}' is installed"
168 + else
169 + echo "Package '$package' is NOT installed"
170 + packages_to_install="$packages_to_install $package"
171 + fi
172 +done
173 +
174 +if [[ -z $packages_to_install ]]; then
175 + echo "All required packages are already installed. Skipping .."
176 +else
177 + echo "packages_to_install:" "${packages_to_install[@]}"
178 + opts=
179 + if [[ "${NON_INTERACTIVE}" == "1" ]]; then
180 + echo >&2 "Running in non-interactive mode"
181 + opts="-y"
182 + fi
183 + # shellcheck disable=SC2068
184 + ${package_manager} install ${opts} ${packages_to_install[@]}
185 +fi
packaging/installer/dependencies/clearlinux.sh
+87
@@ -0,0 +1,87 @@
1 +#!/usr/bin/env bash
2 +# Package tree used for installing netdata on distribution:
3 +# << ClearLinux: [base] >>
4 +
5 +set -e
6 +
7 +NON_INTERACTIVE=0
8 +DONT_WAIT=0
9 +
10 +declare -a package_tree=(
11 + c-basic
12 + make
13 + sysadmin-basic
14 + devpkg-zlib
15 + devpkg-util-linux
16 + devpkg-libmnl
17 + devpkg-json-c
18 + devpkg-libuv
19 + devpkg-lz4
20 + devpkg-openssl
21 + devpkg-elfutils
22 + git
23 + findutils
24 + curl
25 + gzip
26 + python3-basic
27 +)
28 +
29 +usage() {
30 + cat << EOF
31 +OPTIONS:
32 +[--dont-wait] [--non-interactive] [ ]
33 +EOF
34 +}
35 +
36 +check_flags() {
37 + while [ -n "${1}" ]; do
38 + case "${1}" in
39 + dont-wait | --dont-wait | -n)
40 + DONT_WAIT=1
41 + ;;
42 +
43 + non-interactive | --non-interactive | -y)
44 + NON_INTERACTIVE=1
45 + ;;
46 +
47 + help | -h | --help)
48 + usage
49 + exit 1
50 + ;;
51 + *)
52 + echo >&2 "ERROR: Cannot understand option '${1}'"
53 + echo >&2
54 + usage
55 + exit 1
56 + ;;
57 + esac
58 + shift
59 + done
60 +
61 + if [ "${DONT_WAIT}" -eq 0 ] && [ "${NON_INTERACTIVE}" -eq 0 ]; then
62 + read -r -p "Press ENTER to run it > " || exit 1
63 + fi
64 +}
65 +
66 +# shellcheck disable=SC2068
67 +check_flags ${@}
68 +
69 +packages_to_install=
70 +
71 +# shellcheck disable=SC2068
72 +for package in ${package_tree[@]}; do
73 + if [[ "$(swupd bundle-info "$package" | grep Status | cut -d':' -f2)" == " Not installed" ]]; then
74 + echo "Package '$package' is NOT installed"
75 + packages_to_install="$packages_to_install $package"
76 + else
77 + echo "Package '$package' is installed"
78 + fi
79 +done
80 +
81 +if [[ -z $packages_to_install ]]; then
82 + echo "All required packages are already installed. Skipping .."
83 +else
84 + echo "packages_to_install: " "${packages_to_install[@]}"
85 + # shellcheck disable=SC2068
86 + swupd bundle-add ${packages_to_install[@]}
87 +fi
packaging/installer/dependencies/debian.sh
+105
@@ -0,0 +1,105 @@
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 + git
12 + gcc
13 + g++
14 + make
15 + automake
16 + cmake
17 + autoconf
18 + autoconf-archive
19 + autogen
20 + libtool
21 + pkg-config
22 + tar
23 + curl
24 + gzip
25 + netcat
26 + zlib1g-dev
27 + uuid-dev
28 + libmnl-dev
29 + libjson-c-dev
30 + libuv1-dev
31 + liblz4-dev
32 + libssl-dev
33 + libjudy-dev
34 + libelf-dev
35 + python
36 + python3
37 + "
38 +
39 +usage() {
40 + cat << EOF
41 +OPTIONS:
42 +[--dont-wait] [--non-interactive] [ ]
43 +EOF
44 +}
45 +
46 +check_flags() {
47 + while [ -n "${1}" ]; do
48 + case "${1}" in
49 + dont-wait | --dont-wait | -n)
50 + DONT_WAIT=1
51 + ;;
52 +
53 + non-interactive | --non-interactive | -y)
54 + NON_INTERACTIVE=1
55 + ;;
56 +
57 + help | -h | --help)
58 + usage
59 + exit 1
60 + ;;
61 + *)
62 + echo >&2 "ERROR: Cannot understand option '${1}'"
63 + echo >&2
64 + usage
65 + exit 1
66 + ;;
67 + esac
68 + shift
69 + done
70 +
71 + if [ "${DONT_WAIT}" -eq 0 ] && [ "${NON_INTERACTIVE}" -eq 0 ]; then
72 + read -r -p "Press ENTER to run it > " || exit 1
73 + fi
74 +}
75 +
76 +# shellcheck disable=2068
77 +check_flags ${@}
78 +
79 +packages_to_install=
80 +
81 +for package in $package_tree; do
82 + if dpkg -s "$package" &> /dev/null; then
83 + echo "Package '${package}' is installed"
84 + else
85 + echo "Package '${package}' is NOT installed"
86 + packages_to_install="$packages_to_install $package"
87 + fi
88 +done
89 +
90 +if [[ -z "$packages_to_install" ]]; then
91 + echo "All required packages are already installed. Skipping .."
92 +else
93 + echo "packages_to_install:" "$packages_to_install"
94 + opts=
95 + if [ "${NON_INTERACTIVE}" -eq 1 ]; then
96 + echo >&2 "Running in non-interactive mode"
97 + # shellcheck disable=SC2034
98 + DEBIAN_FRONTEND="noninteractive"
99 + opts="${opts} -yq"
100 + fi
101 + echo "Running apt-get update and updating your APT caches ..."
102 + apt-get update
103 + # shellcheck disable=2086
104 + apt-get install ${opts} $packages_to_install
105 +fi
packaging/installer/dependencies/fedora.sh new
+119
@@ -0,0 +1,119 @@
1 +#!/usr/bin/env bash
2 +# Package tree used for installing netdata on distribution:
3 +# << Fedora: [24->35] >>
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 "Erorr: Cannot determine OS version!"
16 + exit 1
17 + fi
18 +}
19 +
20 +if [[ $(os_version) -gt 24 ]]; then
21 + ulogd_pkg=
22 +else
23 + ulogd_pkg=ulogd
24 +fi
25 +
26 +declare -a package_tree=(
27 + findutils
28 + gcc
29 + gcc-c++
30 + make
31 + autoconf
32 + autoconf-archive
33 + autogen
34 + automake
35 + libtool
36 + cmake
37 + nmap-ncat
38 + zlib-devel
39 + libuuid-devel
40 + libmnl-devel
41 + json-c-devel
42 + libuv-devel
43 + lz4-devel
44 + openssl-devel
45 + Judy-devel
46 + elfutils-libelf-devel
47 + git
48 + pkgconfig
49 + tar
50 + curl
51 + gzip
52 + python3
53 + "${ulogd_pkg}"
54 +)
55 +
56 +usage() {
57 + cat << EOF
58 +OPTIONS:
59 +[--dont-wait] [--non-interactive] [ ]
60 +EOF
61 +}
62 +
63 +check_flags() {
64 + while [ -n "${1}" ]; do
65 + case "${1}" in
66 + dont-wait | --dont-wait | -n)
67 + DONT_WAIT=1
68 + ;;
69 +
70 + non-interactive | --non-interactive | -y)
71 + NON_INTERACTIVE=1
72 + ;;
73 +
74 + help | -h | --help)
75 + usage
76 + exit 1
77 + ;;
78 + *)
79 + echo >&2 "ERROR: Cannot understand option '${1}'"
80 + echo >&2
81 + usage
82 + exit 1
83 + ;;
84 + esac
85 + shift
86 + done
87 +
88 + if [ "${DONT_WAIT}" -eq 0 ] && [ "${NON_INTERACTIVE}" -eq 0 ]; then
89 + read -r -p "Press ENTER to run it > " || exit 1
90 + fi
91 +}
92 +
93 +# shellcheck disable=SC2068
94 +check_flags ${@}
95 +
96 +packages_to_install=
97 +
98 +# shellcheck disable=SC2068
99 +for package in ${package_tree[@]}; do
100 + if rpm -q "$package" &> /dev/null; then
101 + echo "Package '${package}' is installed"
102 + else
103 + echo "Package '$package' is NOT installed"
104 + packages_to_install="$packages_to_install $package"
105 + fi
106 +done
107 +
108 +if [[ -z $packages_to_install ]]; then
109 + echo "All required packages are already installed. Skipping .."
110 +else
111 + echo "packages_to_install:" "${packages_to_install[@]}"
112 + opts=
113 + if [ "${NON_INTERACTIVE}" -eq 1 ]; then
114 + echo >&2 "Running in non-interactive mode"
115 + opts="-y"
116 + fi
117 + # shellcheck disable=SC2068
118 + dnf install ${opts} ${packages_to_install[@]}
119 +fi
packaging/installer/dependencies/freebsd.sh
+145
@@ -0,0 +1,145 @@
1 +#!/usr/bin/env bash
2 +# Package tree used for installing netdata on distribution:
3 +# << FreeBSD >>
4 +
5 +set -e
6 +
7 +NON_INTERACTIVE=0
8 +DONT_WAIT=0
9 +
10 +package_tree="
11 + git
12 + gcc
13 + autoconf
14 + autoconf-archive
15 + autogen
16 + automake
17 + libtool
18 + pkgconf
19 + cmake
20 + curl
21 + gzip
22 + netcat
23 + lzlib
24 + e2fsprogs-libuuid
25 + json-c
26 + libuv
27 + liblz4
28 + openssl
29 + Judy
30 + python3
31 + "
32 +
33 +prompt() {
34 + if [ "${NON_INTERACTIVE}" -eq 1 ]; then
35 + echo >&2 "Running in non-interactive mode, assuming yes (y)"
36 + echo >&2 " > Would have prompted for ${1} ..."
37 + return 0
38 + fi
39 +
40 + while true; do
41 + read -r -p "${1} [y/n] " yn
42 + case $yn in
43 + [Yy]*) return 0 ;;
44 + [Nn]*) return 1 ;;
45 + *) echo >&2 "Please answer with yes (y) or no (n)." ;;
46 + esac
47 + done
48 +}
49 +
50 +usage() {
51 + cat << EOF
52 +OPTIONS:
53 +[--dont-wait] [--non-interactive] [ ]
54 +EOF
55 +}
56 +
57 +check_flags() {
58 + while [ -n "${1}" ]; do
59 + case "${1}" in
60 + dont-wait | --dont-wait | -n)
61 + DONT_WAIT=1
62 + ;;
63 +
64 + non-interactive | --non-interactive | -y)
65 + NON_INTERACTIVE=1
66 + ;;
67 +
68 + help | -h | --help)
69 + usage
70 + exit 1
71 + ;;
72 + *)
73 + echo >&2 "ERROR: Cannot understand option '${1}'"
74 + echo >&2
75 + usage
76 + exit 1
77 + ;;
78 + esac
79 + shift
80 + done
81 +
82 + if [ "${DONT_WAIT}" -eq 0 ] && [ "${NON_INTERACTIVE}" -eq 0 ]; then
83 + read -r -p "Press ENTER to run it > " || exit 1
84 + fi
85 +}
86 +
87 +validate_tree_freebsd() {
88 + opts=
89 + if [ "${NON_INTERACTIVE}" -eq 1 ]; then
90 + echo >&2 "Running in non-interactive mode"
91 + opts="-y"
92 + fi
93 +
94 + echo >&2 " > Checking for gmake ..."
95 + if ! pkg query %n-%v | grep -q gmake; then
96 + if prompt "gmake is required to build on FreeBSD and is not installed. Shall I install it?"; then
97 + pkg install ${opts} gmake
98 + fi
99 + fi
100 +}
101 +
102 +enable_repo () {
103 + if ! dnf repolist | grep -q codeready; then
104 +cat >> /etc/yum.repos.d/oracle-linux-ol8.repo <<-EOF
105 +
106 +[ol8_codeready_builder]
107 +name=Oracle Linux \$releasever CodeReady Builder (\$basearch)
108 +baseurl=http://yum.oracle.com/repo/OracleLinux/OL8/codeready/builder/\$basearch
109 +gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
110 +gpgcheck=1
111 +enabled=1
112 +EOF
113 + else
114 + echo "Something went wrong!"
115 + exit 1
116 + fi
117 +}
118 +
119 +# shellcheck disable=SC2068
120 +check_flags ${@}
121 +validate_tree_freebsd
122 +
123 +packages_to_install=
124 +
125 +for package in $package_tree; do
126 + if pkg info -Ix "$package" &> /dev/null; then
127 + echo "Package '${package}' is installed"
128 + else
129 + echo "Package '${package}' is NOT installed"
130 + packages_to_install="$packages_to_install $package"
131 + fi
132 +done
133 +
134 +if [[ -z "$packages_to_install" ]]; then
135 + echo "All required packages are already installed. Skipping .."
136 +else
137 + echo "packages_to_install:" "$packages_to_install"
138 + opts=
139 + if [ "${NON_INTERACTIVE}" -eq 1 ]; then
140 + echo >&2 "Running in non-interactive mode"
141 + opts="-y"
142 + fi
143 + # shellcheck disable=SC2086
144 + pkg install ${opts} $packages_to_install
145 +fi
packaging/installer/dependencies/gentoo.sh
+99
@@ -0,0 +1,99 @@
1 +#!/usr/bin/env bash
2 +# Package tree used for installing netdata on distribution:
3 +# << Gentoo >> | << Pentoo >>
4 +
5 +set -e
6 +
7 +NON_INTERACTIVE=0
8 +DONT_WAIT=0
9 +
10 +package_tree="
11 + dev-vcs/git
12 + sys-apps/findutils
13 + sys-devel/gcc
14 + sys-devel/make
15 + sys-devel/autoconf
16 + sys-devel/autoconf-archive
17 + sys-devel/autogen
18 + sys-devel/automake
19 + virtual/pkgconfig
20 + dev-util/cmake
21 + app-arch/tar
22 + net-misc/curl
23 + app-arch/gzip
24 + net-analyzer/netcat
25 + sys-apps/util-linux
26 + net-libs/libmnl
27 + dev-libs/json-c
28 + dev-libs/libuv
29 + app-arch/lz4
30 + dev-libs/openssl
31 + dev-libs/judy
32 + virtual/libelf
33 + dev-lang/python
34 + dev-libs/libuv
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=SC2068
74 +check_flags ${@}
75 +
76 +packages_to_install=
77 +
78 +# shellcheck disable=SC2068
79 +for package in $package_tree; do
80 + if qlist -IRv "$package" &> /dev/null; then
81 + echo "Package '${package}' is installed"
82 + else
83 + echo "Package '${package}' is NOT installed"
84 + packages_to_install="$packages_to_install $package"
85 + fi
86 +done
87 +
88 +if [[ -z "$packages_to_install" ]]; then
89 + echo "All required packages are already installed. Skipping .."
90 +else
91 + echo "packages_to_install:" "$packages_to_install"
92 + opts="--ask"
93 + if [ "${NON_INTERACTIVE}" -eq 1 ]; then
94 + echo >&2 "Running in non-interactive mode"
95 + opts=""
96 + fi
97 + # shellcheck disable=SC2086
98 + emerge ${opts} $packages_to_install
99 +fi
packaging/installer/dependencies/ol.sh
+144
@@ -0,0 +1,144 @@
1 +#!/usr/bin/env bash
2 +# Package tree used for installing netdata on distribution:
3 +# << Oracle Linux: [8] >>
4 +
5 +set -e
6 +
7 +NON_INTERACTIVE=0
8 +DONT_WAIT=0
9 +
10 +declare -a package_tree=(
11 + gcc
12 + gcc-c++
13 + make
14 + autoconf
15 + autoconf-archive
16 + autogen
17 + automake
18 + libtool
19 + pkgconfig
20 + cmake
21 + nmap-ncat
22 + tar
23 + zlib-devel
24 + libuuid-devel
25 + libmnl-devel
26 + json-c-devel
27 + libuv-devel
28 + lz4-devel
29 + openssl-devel
30 + python3
31 + elfutils-libelf-devel
32 + git
33 + curl
34 + gzip
35 +)
36 +
37 +prompt() {
38 + if [ "${NON_INTERACTIVE}" -eq 1 ]; then
39 + echo >&2 "Running in non-interactive mode, assuming yes (y)"
40 + echo >&2 " > Would have prompted for ${1} ..."
41 + return 0
42 + fi
43 +
44 + while true; do
45 + read -r -p "${1} [y/n] " yn
46 + case $yn in
47 + [Yy]*) return 0 ;;
48 + [Nn]*) return 1 ;;
49 + *) echo >&2 "Please answer with yes (y) or no (n)." ;;
50 + esac
51 + done
52 +}
53 +
54 +usage() {
55 + cat << EOF
56 +OPTIONS:
57 +[--dont-wait] [--non-interactive] [ ]
58 +EOF
59 +}
60 +
61 +check_flags() {
62 + while [ -n "${1}" ]; do
63 + case "${1}" in
64 + dont-wait | --dont-wait | -n)
65 + DONT_WAIT=1
66 + ;;
67 +
68 + non-interactive | --non-interactive | -y)
69 + NON_INTERACTIVE=1
70 + ;;
71 +
72 + help | -h | --help)
73 + usage
74 + exit 1
75 + ;;
76 + *)
77 + echo >&2 "ERROR: Cannot understand option '${1}'"
78 + echo >&2
79 + usage
80 + exit 1
81 + ;;
82 + esac
83 + shift
84 + done
85 +
86 + if [ "${DONT_WAIT}" -eq 0 ] && [ "${NON_INTERACTIVE}" -eq 0 ]; then
87 + read -r -p "Press ENTER to run it > " || exit 1
88 + fi
89 +}
90 +
91 +validate_tree_ol() {
92 +
93 + opts=
94 + if [ "${NON_INTERACTIVE}" -eq 1 ]; then
95 + echo >&2 "Running in non-interactive mode"
96 + opts="-y"
97 + fi
98 +
99 +
100 + echo >&2 " > Checking for config-manager ..."
101 + if ! dnf config-manager &> /dev/null; then
102 + if prompt "config-manager not found, shall I install it?"; then
103 + dnf ${opts} install 'dnf-command(config-manager)'
104 + fi
105 + fi
106 +
107 + echo " > Checking for CodeReady Builder ..."
108 + if ! dnf repolist | grep ol8_codeready_builder; then
109 + if prompt "CodeReadyBuilder not found, shall I install it?"; then
110 + dnf ${opts} config-manager --set-enabled ol8_codeready_builder || enable_repo
111 + fi
112 + fi
113 +
114 + dnf makecache --refresh
115 +}
116 +
117 +# shellcheck disable=SC2068
118 +check_flags ${@}
119 +validate_tree_ol
120 +
121 +packages_to_install=
122 +
123 +# shellcheck disable=SC2068
124 +for package in ${package_tree[@]}; do
125 + if rpm -q "$package" &> /dev/null; then
126 + echo "Package '${package}' is installed"
127 + else
128 + echo "Package '$package' is NOT installed"
129 + packages_to_install="$packages_to_install $package"
130 + fi
131 +done
132 +
133 +if [[ -z $packages_to_install ]]; then
134 + echo "All required packages are already installed. Skipping .."
135 +else
136 + opts=
137 + if [ "${NON_INTERACTIVE}" -eq 1 ]; then
138 + echo >&2 "Running in non-interactive mode"
139 + opts="-y"
140 + fi
141 + echo "packages_to_install:" "${packages_to_install[@]}"
142 + # shellcheck disable=SC2068
143 + dnf install ${opts} ${packages_to_install[@]}
144 +fi
packaging/installer/dependencies/opensuse.sh
+103
@@ -0,0 +1,103 @@
1 +#!/usr/bin/env bash
2 +# Package tree used for installing netdata on distribution:
3 +# << opeSUSE >>
4 +# supported versions: leap/15.3 and tumbleweed
5 +# it may work with SLES as well, although we have not tested with it
6 +
7 +set -e
8 +
9 +NON_INTERACTIVE=0
10 +DONT_WAIT=0
11 +
12 +declare -a package_tree=(
13 + gcc
14 + gcc-c++
15 + make
16 + autoconf
17 + autoconf-archive
18 + autogen
19 + automake
20 + libtool
21 + pkg-config
22 + cmake
23 + netcat-openbsd
24 + zlib-devel
25 + libuuid-devel
26 + libmnl-devel
27 + libjson-c-devel
28 + libuv-devel
29 + liblz4-devel
30 + libopenssl-devel
31 + judy-devel
32 + libelf-devel
33 + git
34 + tar
35 + curl
36 + gzip
37 + python3
38 +)
39 +
40 +usage() {
41 + cat << EOF
42 +OPTIONS:
43 +[--dont-wait] [--non-interactive] [ ]
44 +EOF
45 +}
46 +
47 +check_flags() {
48 + while [ -n "${1}" ]; do
49 + case "${1}" in
50 + dont-wait | --dont-wait | -n)
51 + DONT_WAIT=1
52 + ;;
53 +
54 + non-interactive | --non-interactive | -y)
55 + NON_INTERACTIVE=1
56 + ;;
57 +
58 + help | -h | --help)
59 + usage
60 + exit 1
61 + ;;
62 + *)
63 + echo >&2 "ERROR: Cannot understand option '${1}'"
64 + echo >&2
65 + usage
66 + exit 1
67 + ;;
68 + esac
69 + shift
70 + done
71 +
72 + if [ "${DONT_WAIT}" -eq 0 ] && [ "${NON_INTERACTIVE}" -eq 0 ]; then
73 + read -r -p "Press ENTER to run it > " || exit 1
74 + fi
75 +}
76 +
77 +# shellcheck disable=SC2068
78 +check_flags ${@}
79 +
80 +packages_to_install=
81 +
82 +# shellcheck disable=SC2068
83 +for package in ${package_tree[@]}; do
84 + if zypper search -i "$package" &> /dev/null; then
85 + echo "Package '${package}' is installed"
86 + else
87 + echo "Package '$package' is NOT installed"
88 + packages_to_install="$packages_to_install $package"
89 + fi
90 +done
91 +
92 +if [[ -z $packages_to_install ]]; then
93 + echo "All required packages are already installed. Skipping .."
94 +else
95 + echo "packages_to_install:" "${packages_to_install[@]}"
96 + opts="--ignore-unknown"
97 + if [ "${NON_INTERACTIVE}" -eq 1 ]; then
98 + echo >&2 "Running in non-interactive mode"
99 + opts="--non-interactive"
100 + fi
101 + # shellcheck disable=SC2068
102 + zypper ${opts} install ${packages_to_install[@]}
103 +fi
packaging/installer/dependencies/rockylinux.sh new
+162
@@ -0,0 +1,162 @@
1 +#!/usr/bin/env bash
2 +# Package tree used for installing netdata on distribution:
3 +# << Rocky Linux:[8.5] >>
4 +
5 +set -e
6 +
7 +NON_INTERACTIVE=0
8 +DONT_WAIT=0
9 +
10 +declare -a package_tree=(
11 + gcc
12 + gcc-c++
13 + make
14 + autoconf
15 + autoconf-archive
16 + autogen
17 + automake
18 + libtool
19 + pkgconfig
20 + cmake
21 + nmap-ncat
22 + zlib-devel
23 + libuuid-devel
24 + libmnl-devel
25 + json-c-devel
26 + libuv-devel
27 + lz4-devel
28 + openssl-devel
29 + python3
30 + elfutils-libelf-devel
31 + git
32 + tar
33 + curl
34 + gzip
35 +)
36 +
37 +prompt() {
38 + if [ "${NON_INTERACTIVE}" -eq 1 ]; then
39 + echo >&2 "Running in non-interactive mode, assuming yes (y)"
40 + echo >&2 " > Would have prompted for ${1} ..."
41 + return 0
42 + fi
43 +
44 + while true; do
45 + read -r -p "${1} [y/n] " yn
46 + case $yn in
47 + [Yy]*) return 0 ;;
48 + [Nn]*) return 1 ;;
49 + *) echo >&2 "Please answer with yes (y) or no (n)." ;;
50 + esac
51 + done
52 +}
53 +
54 +usage() {
55 + cat << EOF
56 +OPTIONS:
57 +[--dont-wait] [--non-interactive] [ ]
58 +EOF
59 +}
60 +
61 +check_flags() {
62 + while [ -n "${1}" ]; do
63 + case "${1}" in
64 + dont-wait | --dont-wait | -n)
65 + DONT_WAIT=1
66 + ;;
67 +
68 + non-interactive | --non-interactive | -y)
69 + NON_INTERACTIVE=1
70 + ;;
71 +
72 + help | -h | --help)
73 + usage
74 + exit 1
75 + ;;
76 + *)
77 + echo >&2 "ERROR: Cannot understand option '${1}'"
78 + echo >&2
79 + usage
80 + exit 1
81 + ;;
82 + esac
83 + shift
84 + done
85 +
86 + if [ "${DONT_WAIT}" -eq 0 ] && [ "${NON_INTERACTIVE}" -eq 0 ]; then
87 + read -r -p "Press ENTER to run it > " || exit 1
88 + fi
89 +}
90 +
91 +validate_tree_rockylinux() {
92 + local opts=
93 + if [ "${NON_INTERACTIVE}" -eq 1 ]; then
94 + echo >&2 "Running in non-interactive mode"
95 + opts="-y"
96 + fi
97 +
98 + echo >&2 " > Checking for config-manager ..."
99 + if ! dnf config-manager; then
100 + if prompt "config-manager not found, shall I install it?"; then
101 + dnf ${opts} install 'dnf-command(config-manager)'
102 + fi
103 + fi
104 +
105 + echo >&2 " > Checking for PowerTools ..."
106 + if ! dnf repolist | grep PowerTools; then
107 + if prompt "PowerTools not found, shall I install it?"; then
108 + dnf ${opts} config-manager --set-enabled powertools || enable_powertools_repo
109 + fi
110 + fi
111 +
112 + echo >&2 " > Updating libarchive ..."
113 + dnf ${opts} install libarchive
114 +
115 + dnf makecache --refresh
116 +}
117 +
118 +enable_powertools_repo() {
119 + if ! dnf repolist | grep -q powertools; then
120 + cat > /etc/yum.repos.d/powertools.repo <<-EOF
121 + [powertools]
122 + name=Rocky Linux \$releasever - PowerTools
123 + mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=\$basearch&repo=PowerTools-\$releasever
124 + #baseurl=http://dl.rockylinux.org/\$contentdir/\$releasever/PowerTools/\$basearch/os/
125 + gpgcheck=1
126 + enabled=1
127 + gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
128 +EOF
129 + else
130 + echo "Something went wrong!"
131 + exit 1
132 + fi
133 +}
134 +
135 +# shellcheck disable=SC2068
136 +check_flags ${@}
137 +validate_tree_rockylinux
138 +
139 +packages_to_install=
140 +
141 +# shellcheck disable=SC2068
142 +for package in ${package_tree[@]}; do
143 + if rpm -q "$package" &> /dev/null; then
144 + echo "Package '${package}' is installed"
145 + else
146 + echo "Package '$package' is NOT installed"
147 + packages_to_install="$packages_to_install $package"
148 + fi
149 +done
150 +
151 +if [[ -z $packages_to_install ]]; then
152 + echo "All required packages are already installed. Skipping .."
153 +else
154 + echo "packages_to_install:" "${packages_to_install[@]}"
155 + opts=
156 + if [ "${NON_INTERACTIVE}" -eq 1 ]; then
157 + echo >&2 "Running in non-interactive mode"
158 + opts="-y"
159 + fi
160 + # shellcheck disable=SC2068
161 + dnf install ${opts} ${packages_to_install[@]}
162 +fi
packaging/installer/dependencies/ubuntu.sh
+102
@@ -0,0 +1,102 @@
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 + git
12 + gcc
13 + g++
14 + make
15 + automake
16 + cmake
17 + autoconf
18 + autoconf-archive
19 + autogen
20 + libtool
21 + pkg-config
22 + tar
23 + curl
24 + gzip
25 + netcat
26 + zlib1g-dev
27 + uuid-dev
28 + libmnl-dev
29 + libjson-c-dev
30 + libuv1-dev
31 + liblz4-dev
32 + libssl-dev
33 + libjudy-dev
34 + libelf-dev
35 + python3
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 + read -r -p "Press ENTER to run it > " || exit 1
71 + fi
72 +}
73 +
74 +# shellcheck disable=SC2068
75 +check_flags ${@}
76 +
77 +packages_to_install=
78 +
79 +for package in $package_tree; do
80 + if dpkg -s "$package" &> /dev/null; then
81 + echo "Package '${package}' is installed"
82 + else
83 + echo "Package '${package}' is NOT installed"
84 + packages_to_install="$packages_to_install $package"
85 + fi
86 +done
87 +
88 +if [[ -z "$packages_to_install" ]]; then
89 + echo "All required packages are already installed. Skipping .."
90 +else
91 + echo "packages_to_install:" "$packages_to_install"
92 + opts=
93 + if [ "${NON_INTERACTIVE}" -eq 1 ]; then
94 + echo >&2 "Running in non-interactive mode"
95 + export 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=SC2086
101 + apt-get install ${opts} $packages_to_install
102 +fi