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