summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rw-r--r--contrib/README.md61
-rw-r--r--contrib/debian/changelog6
-rw-r--r--contrib/debian/compat1
-rw-r--r--contrib/debian/control66
-rw-r--r--contrib/debian/control.xenial61
-rw-r--r--contrib/debian/copyright10
-rwxr-xr-xcontrib/debian/install_go.sh98
-rw-r--r--contrib/debian/netdata.default3
-rw-r--r--contrib/debian/netdata.docs1
-rwxr-xr-xcontrib/debian/netdata.init56
-rw-r--r--contrib/debian/netdata.install1
-rw-r--r--contrib/debian/netdata.lintian-overrides16
-rw-r--r--contrib/debian/netdata.postinst85
-rw-r--r--contrib/debian/netdata.postrm53
-rw-r--r--contrib/debian/netdata.preinst18
-rwxr-xr-xcontrib/debian/rules137
-rw-r--r--contrib/debian/source/format1
-rwxr-xr-xcontrib/rhel/build-netdata-rpm.sh56
18 files changed, 730 insertions, 0 deletions
diff --git a/contrib/README.md b/contrib/README.md
new file mode 100644
index 0000000..36abd3b
--- /dev/null
+++ b/contrib/README.md
@@ -0,0 +1,61 @@
+<!--
+title: "Netdata contrib"
+custom_edit_url: https://github.com/netdata/netdata/edit/master/contrib/README.md
+-->
+
+# Netdata contrib
+
+## Building .deb packages
+
+The `contrib/debian/` directory contains basic rules to build a
+Debian package. It has been tested on Debian Jessie and Wheezy,
+but should work, possibly with minor changes, if you have other
+dpkg-based systems such as Ubuntu or Mint.
+
+To build Netdata for a Debian Jessie system, the debian directory
+has to be available in the root of the Netdata source. The easiest
+way to do this is with a symlink:
+
+```sh
+ln -s contrib/debian
+```
+
+Edit the `debian/changelog` file to reflect the package version and
+the build time:
+
+```sh
+netdata (1.21.0) unstable; urgency=medium
+
+ * Initial Release
+
+ -- Netdata Builder <bot@netdata.cloud> Tue, 12 May 2020 10:36:52 +0200
+```
+
+Then build the debian package:
+
+```sh
+dpkg-buildpackage -us -uc -rfakeroot
+```
+
+This should give a package that can be installed in the parent
+directory, which you can install manually with dpkg.
+
+```sh
+ls -1 ../*.deb
+../netdata_1.21.0_amd64.deb
+../netdata-dbgsym_1.21.0_amd64.deb
+../netdata-plugin-cups_1.21.0_amd64.deb
+../netdata-plugin-cups-dbgsym_1.21.0_amd64.deb
+../netdata-plugin-freeipmi_1.21.0_amd64.deb
+../netdata-plugin-freeipmi-dbgsym_1.21.0_amd64.deb
+sudo dpkg -i ../netdata_1.21.0_amd64.deb
+```
+
+### Reinstalling Netdata
+
+The recommended way to upgrade Netdata packages built from this
+source is to remove the current package from your system, then
+install the new package. Upgrading on wheezy is known to not
+work cleanly; Jessie may behave as expected.
+
+
diff --git a/contrib/debian/changelog b/contrib/debian/changelog
new file mode 100644
index 0000000..5ac1edb
--- /dev/null
+++ b/contrib/debian/changelog
@@ -0,0 +1,6 @@
+netdata (PREVIOUS_PACKAGE_VERSION) unstable; urgency=medium
+
+ * Initial Release
+
+ -- Netdata Builder <bot@netdata.cloud> PREVIOUS_PACKAGE_DATE
+
diff --git a/contrib/debian/compat b/contrib/debian/compat
new file mode 100644
index 0000000..f599e28
--- /dev/null
+++ b/contrib/debian/compat
@@ -0,0 +1 @@
+10
diff --git a/contrib/debian/control b/contrib/debian/control
new file mode 100644
index 0000000..c5e5791
--- /dev/null
+++ b/contrib/debian/control
@@ -0,0 +1,66 @@
+Source: netdata
+Build-Depends: debhelper (>= 9.20160709),
+ dh-autoreconf,
+ dpkg-dev (>= 1.13.19),
+ zlib1g-dev,
+ uuid-dev,
+ libelf-dev,
+ libuv1-dev,
+ liblz4-dev,
+ libssl-dev,
+ libmnl-dev,
+ libjson-c-dev,
+ libcups2-dev,
+ libipmimonitoring-dev,
+ libnetfilter-acct-dev,
+ libsnappy-dev,
+ libprotobuf-dev,
+ libprotoc-dev,
+ cmake,
+ autogen,
+ autoconf,
+ automake,
+ pkg-config,
+ curl,
+ protobuf-compiler
+Section: net
+Priority: optional
+Maintainer: Netdata Builder <bot@netdata.cloud>
+Standards-Version: 3.9.6
+Homepage: https://netdata.cloud
+
+Package: netdata
+Architecture: any
+Depends: adduser,
+ libcap2-bin (>= 1:2.0),
+ lsb-base (>= 3.1-23.2),
+ openssl,
+ ${misc:Depends},
+ ${shlibs:Depends}
+Conflicts: netdata-core,
+ netdata-plugins-bash,
+ netdata-plugins-python,
+ netdata-web
+Pre-Depends: dpkg (>= 1.17.14)
+Description: real-time charts for system monitoring
+ Netdata is a daemon that collects data in realtime (per second)
+ and presents a web site to view and analyze them. The presentation
+ is also real-time and full of interactive charts that precisely
+ render all collected values.
+
+Package: netdata-plugin-cups
+Architecture: any
+Depends: cups,
+ ${shlibs:Depends},
+ netdata (>= ${source:Version})
+Description: The Common Unix Printing System plugin for metrics collection from cupsd
+
+Package: netdata-plugin-freeipmi
+Architecture: any
+Depends: freeipmi,
+ ${shlibs:Depends},
+ netdata (= ${source:Version})
+Description: FreeIPMI - The Intelligent Platform Management System.
+ The IPMI specification defines a set of interfaces for platform management.
+ It is implemented by a number vendors for system management. The features of IPMI that most users will be interested in
+ are sensor monitoring, system event monitoring, power control, and serial-over-LAN (SOL).
diff --git a/contrib/debian/control.xenial b/contrib/debian/control.xenial
new file mode 100644
index 0000000..43246d7
--- /dev/null
+++ b/contrib/debian/control.xenial
@@ -0,0 +1,61 @@
+Source: netdata
+Build-Depends: debhelper (>= 9),
+ dh-autoreconf,
+ dh-systemd (>= 1.5),
+ dpkg-dev (>= 1.13.19),
+ zlib1g-dev,
+ uuid-dev,
+ libelf-dev,
+ libuv1-dev,
+ liblz4-dev,
+ libssl-dev,
+ libmnl-dev,
+ libjson-c-dev,
+ libcups2-dev,
+ libipmimonitoring-dev,
+ libnetfilter-acct-dev,
+ libsnappy-dev,
+ libprotobuf-dev,
+ libprotoc-dev,
+ cmake,
+ autogen,
+ autoconf,
+ automake,
+ pkg-config,
+ curl,
+ protobuf-compiler
+Section: net
+Priority: optional
+Maintainer: Netdata Builder <bot@netdata.cloud>
+Standards-Version: 3.9.6
+Homepage: https://netdata.cloud
+
+Package: netdata
+Architecture: any
+Depends: adduser,
+ libcap2-bin (>= 1:2.0),
+ lsb-base (>= 3.1-23.2),
+ openssl,
+ ${misc:Depends},
+ ${shlibs:Depends}
+Pre-Depends: dpkg (>= 1.17.14)
+Description: real-time charts for system monitoring
+ Netdata is a daemon that collects data in realtime (per second)
+ and presents a web site to view and analyze them. The presentation
+ is also real-time and full of interactive charts that precisely
+ render all collected values.
+
+Package: netdata-plugin-cups
+Architecture: any
+Depends: cups,
+ netdata (>= ${source:Version})
+Description: The Common Unix Printing System plugin for metrics collection from cupsd
+
+Package: netdata-plugin-freeipmi
+Architecture: any
+Depends: freeipmi,
+ netdata (= ${source:Version})
+Description: FreeIPMI - The Intelligent Platform Management System.
+ The IPMI specification defines a set of interfaces for platform management.
+ It is implemented by a number vendors for system management. The features of IPMI that most users will be interested in
+ are sensor monitoring, system event monitoring, power control, and serial-over-LAN (SOL).
diff --git a/contrib/debian/copyright b/contrib/debian/copyright
new file mode 100644
index 0000000..085580e
--- /dev/null
+++ b/contrib/debian/copyright
@@ -0,0 +1,10 @@
+Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: Netdata
+Upstream-Contact: Costa Tsaousis <costa@tsaousis.gr>
+Source: https://github.com/netdata/netdata
+
+Files: *
+Copyright: 2014-2016, Costa Tsaousis
+License: GPL-3+
+ On Debian systems, the complete text of the GNU General Public
+ License version 3 can be found in /usr/share/common-licenses/GPL-3.
diff --git a/contrib/debian/install_go.sh b/contrib/debian/install_go.sh
new file mode 100755
index 0000000..4c4ee93
--- /dev/null
+++ b/contrib/debian/install_go.sh
@@ -0,0 +1,98 @@
+#!/usr/bin/env bash
+
+GO_PACKAGE_VERSION="$1"
+LIB_DIR="$2"
+LIBEXEC_DIR="$3"
+
+# ############################################################
+# Package Go within netdata (TBD: Package it separately)
+safe_sha256sum() {
+ # Within the context of the installer, we only use -c option that is common between the two commands
+ # We will have to reconsider if we start non-common options
+ if command -v sha256sum >/dev/null 2>&1; then
+ sha256sum $@
+ elif command -v shasum >/dev/null 2>&1; then
+ shasum -a 256 $@
+ else
+ fatal "I could not find a suitable checksum binary to use"
+ fi
+}
+
+download_go() {
+ url="${1}"
+ dest="${2}"
+
+ if command -v curl >/dev/null 2>&1; then
+ curl -sSL --connect-timeout 10 --retry 3 "${url}" > "${dest}"
+ elif command -v wget >/dev/null 2>&1; then
+ wget -T 15 -O - "${url}" > "${dest}"
+ else
+ echo >&2
+ echo >&2 "Downloading go.d plugin from '${url}' failed because of missing mandatory packages."
+ echo >&2 "Either add packages or disable it by issuing '--disable-go' in the installer"
+ echo >&2
+ exit 1
+ fi
+}
+
+install_go() {
+ ARCH_MAP=(
+ 'i386::386'
+ 'i686::386'
+ 'x86_64::amd64'
+ 'aarch64::arm64'
+ 'armv64::arm64'
+ 'armv6l::arm'
+ 'armv7l::arm'
+ 'armv5tel::arm'
+ )
+
+ if [ -z "${NETDATA_DISABLE_GO+x}" ]; then
+ echo >&2 "Install go.d.plugin"
+ ARCH=$(uname -m)
+ OS=$(uname -s | tr '[:upper:]' '[:lower:]')
+
+ for index in "${ARCH_MAP[@]}" ; do
+ KEY="${index%%::*}"
+ VALUE="${index##*::}"
+ if [ "$KEY" = "$ARCH" ]; then
+ ARCH="${VALUE}"
+ break
+ fi
+ done
+ tmp=$(mktemp -d /tmp/netdata-go-XXXXXX)
+ GO_PACKAGE_BASENAME="go.d.plugin-${GO_PACKAGE_VERSION}.${OS}-${ARCH}.tar.gz"
+ download_go "https://github.com/netdata/go.d.plugin/releases/download/${GO_PACKAGE_VERSION}/${GO_PACKAGE_BASENAME}" "${tmp}/${GO_PACKAGE_BASENAME}"
+ download_go "https://github.com/netdata/go.d.plugin/releases/download/${GO_PACKAGE_VERSION}/config.tar.gz" "${tmp}/config.tar.gz"
+
+ if [ ! -f "${tmp}/${GO_PACKAGE_BASENAME}" ] || [ ! -f "${tmp}/config.tar.gz" ] || [ ! -s "${tmp}/config.tar.gz" ] || [ ! -s "${tmp}/${GO_PACKAGE_BASENAME}" ]; then
+ echo >&2 "Either check the error or consider disabling it by issuing '--disable-go' in the installer"
+ echo >&2
+ return 1
+ fi
+
+ grep "${GO_PACKAGE_BASENAME}\$" "packaging/go.d.checksums" > "${tmp}/sha256sums.txt" 2>/dev/null
+ grep "config.tar.gz" "packaging/go.d.checksums" >> "${tmp}/sha256sums.txt" 2>/dev/null
+
+ # Checksum validation
+ if ! (cd "${tmp}" && safe_sha256sum -c "sha256sums.txt"); then
+
+ echo >&2 "go.d plugin checksum validation failure."
+ echo >&2 "Either check the error or consider disabling it by issuing '--disable-go' in the installer"
+ echo >&2
+
+ echo "go.d.plugin package files checksum validation failed."
+ exit 1
+ fi
+
+ # Install files
+ tar -xf "${tmp}/config.tar.gz" -C "${LIB_DIR}/conf.d/"
+ tar xf "${tmp}/${GO_PACKAGE_BASENAME}"
+ mv "${GO_PACKAGE_BASENAME/\.tar\.gz/}" "${LIBEXEC_DIR}/plugins.d/go.d.plugin"
+
+ rm -rf "${tmp}"
+ fi
+ return 0
+}
+
+install_go
diff --git a/contrib/debian/netdata.default b/contrib/debian/netdata.default
new file mode 100644
index 0000000..0bc847f
--- /dev/null
+++ b/contrib/debian/netdata.default
@@ -0,0 +1,3 @@
+# Extra arguments to pass to netdata
+#
+EXTRA_OPTS="-P /var/run/netdata/netdata.pid"
diff --git a/contrib/debian/netdata.docs b/contrib/debian/netdata.docs
new file mode 100644
index 0000000..1b763b1
--- /dev/null
+++ b/contrib/debian/netdata.docs
@@ -0,0 +1 @@
+CHANGELOG.md
diff --git a/contrib/debian/netdata.init b/contrib/debian/netdata.init
new file mode 100755
index 0000000..c2706ca
--- /dev/null
+++ b/contrib/debian/netdata.init
@@ -0,0 +1,56 @@
+#!/bin/sh
+# Start/stop the netdata daemon.
+#
+### BEGIN INIT INFO
+# Provides: netdata
+# Required-Start: $remote_fs
+# Required-Stop: $remote_fs
+# Should-Start: $network
+# Should-Stop: $network
+# Default-Start: 2 3 4 5
+# Default-Stop:
+# Short-Description: Real-time charts for system monitoring
+# Description: Netdata is a daemon that collects data in realtime (per second)
+# and presents a web site to view and analyze them. The presentation
+# is also real-time and full of interactive charts that precisely
+# render all collected values.
+### END INIT INFO
+
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+DESC="netdata daemon"
+NAME=netdata
+DAEMON=/usr/sbin/netdata
+PIDFILE=/var/run/netdata/netdata.pid
+SCRIPTNAME=/etc/init.d/"$NAME"
+
+test -f $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+[ -r /etc/default/netdata ] && . /etc/default/netdata
+
+case "$1" in
+start) log_daemon_msg "Starting real-time system monitoring" "netdata"
+ start_daemon -p $PIDFILE $DAEMON -P $PIDFILE $EXTRA_OPTS
+ log_end_msg $?
+ ;;
+stop) log_daemon_msg "Stopping real-time system monitoring" "netdata"
+ killproc -p $PIDFILE $DAEMON
+ RETVAL=$?
+ [ $RETVAL -eq 0 ] && [ -e "$PIDFILE" ] && rm -f $PIDFILE
+ log_end_msg $RETVAL
+ # wait for plugins to exit
+ sleep 1
+ ;;
+restart|force-reload) log_daemon_msg "Restarting real-time system monitoring" "netdata"
+ $0 stop
+ $0 start
+ ;;
+status)
+ status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
+ ;;
+*) log_action_msg "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}"
+ exit 2
+ ;;
+esac
+exit 0
diff --git a/contrib/debian/netdata.install b/contrib/debian/netdata.install
new file mode 100644
index 0000000..45d42b6
--- /dev/null
+++ b/contrib/debian/netdata.install
@@ -0,0 +1 @@
+debian/netdata.conf /etc/netdata/
diff --git a/contrib/debian/netdata.lintian-overrides b/contrib/debian/netdata.lintian-overrides
new file mode 100644
index 0000000..45b2d86
--- /dev/null
+++ b/contrib/debian/netdata.lintian-overrides
@@ -0,0 +1,16 @@
+
+# See Debian policy 10.9. apps.plugin has extra capabilities, so don't let
+# normal users run it.
+netdata: non-standard-executable-perm usr/lib/*/netdata/plugins.d/apps.plugin 0754 != 0755
+
+
+# FontAwesome is at least in the fonts-font-awesome package, but this is
+# not available in wheezy. glyphicons-halflings-regular isn't currently in
+# a Debian package. Therefore don't complain about shipping them with netdata
+# for the time being.
+netdata: duplicate-font-file usr/share/netdata/fonts/*
+netdata: font-in-non-font-package usr/share/netdata/fonts/*
+
+# Files here are marked as conffiles so that local updates to the html files
+# isn't clobbered on upgrade.
+netdata: non-etc-file-marked-as-conffile var/lib/netdata/www/*
diff --git a/contrib/debian/netdata.postinst b/contrib/debian/netdata.postinst
new file mode 100644
index 0000000..daea8cb
--- /dev/null
+++ b/contrib/debian/netdata.postinst
@@ -0,0 +1,85 @@
+#!/bin/sh
+
+set -e
+
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/.well-known /usr/share/netdata/www/.well-known 1.18.1~ netdata -- "$@"
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/css /usr/share/netdata/www/css 1.18.1~ netdata -- "$@"
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/fonts /usr/share/netdata/www/fonts 1.18.1~ netdata -- "$@"
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/images /usr/share/netdata/www/images 1.18.1~ netdata -- "$@"
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/lib /usr/share/netdata/www/lib 1.18.1~ netdata -- "$@"
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/static /usr/share/netdata/www/static 1.18.1~ netdata -- "$@"
+
+case "$1" in
+ configure|recnfigure)
+ if ! getent group netdata > /dev/null; then
+ addgroup --quiet --system netdata
+ fi
+
+ if ! getent passwd netdata > /dev/null; then
+ adduser --quiet --system --ingroup netdata --home /var/lib/netdata --no-create-home netdata
+ fi
+
+ for item in docker nginx varnish haproxy adm nsd proxy squid ceph nobody I2C; do
+ if getent group $item > /dev/null 2>&1; then
+ usermod -a -G $item netdata
+ fi
+ done
+
+ if ! dpkg-statoverride --list /var/lib/netdata > /dev/null 2>&1; then
+ dpkg-statoverride --update --add netdata netdata 0755 /var/lib/netdata
+ fi
+
+ if ! dpkg-statoverride --list /var/lib/netdata/www > /dev/null 2>&1; then
+ dpkg-statoverride --update --add root netdata 0755 /var/lib/netdata/www
+ fi
+
+ if ! dpkg-statoverride --list /var/cache/netdata > /dev/null 2>&1; then
+ dpkg-statoverride --update --add netdata netdata 0755 /var/cache/netdata
+ fi
+
+ if ! dpkg-statoverride --list /var/run/netdata > /dev/null 2>&1; then
+ dpkg-statoverride --update --add netdata netdata 0755 /var/run/netdata
+ fi
+
+ if ! dpkg-statoverride --list /var/log/netdata > /dev/null 2>&1; then
+ dpkg-statoverride --update --add netdata adm 02750 /var/log/netdata
+ fi
+
+ dpkg-statoverride --force --update --add root netdata 0775 /var/lib/netdata/registry > /dev/null 2>&1
+
+ chown -R root:netdata /usr/libexec/netdata/plugins.d
+ setcap cap_dac_read_search,cap_sys_ptrace+ep /usr/libexec/netdata/plugins.d/apps.plugin
+ setcap cap_dac_read_search+ep /usr/libexec/netdata/plugins.d/slabinfo.plugin
+
+ if capsh --supports=cap_perfmon 2>/dev/null; then
+ setcap cap_perfmon+ep /usr/libexec/netdata/plugins.d/perf.plugin
+ else
+ setcap cap_sys_admin+ep /usr/libexec/netdata/plugins.d/perf.plugin
+ fi
+
+ if [ -f "/usr/libexec/netdata/plugins.d/go.d.plugin" ]; then
+ setcap "cap_net_admin+epi cap_net_raw=eip" /usr/libexec/netdata/plugins.d/go.d.plugin
+ fi
+
+ chmod 4750 /usr/libexec/netdata/plugins.d/cgroup-network
+ chmod 4750 /usr/libexec/netdata/plugins.d/nfacct.plugin
+
+ # Workaround if system does not have ebpf.plugin
+ chmod -f 4750 /usr/libexec/netdata/plugins.d/ebpf.plugin || true
+
+ # Workaround for other plugins not installed directly by this package
+ chmod -f 4750 /usr/libexec/netdata/plugins.d/freeipmi.plugin || true
+ chmod -f 4750 /usr/libexec/netdata/plugins.d/ioping || true
+
+ ;;
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/contrib/debian/netdata.postrm b/contrib/debian/netdata.postrm
new file mode 100644
index 0000000..5644e22
--- /dev/null
+++ b/contrib/debian/netdata.postrm
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+set -e
+
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/.well-known /usr/share/netdata/www/.well-known 1.18.1~ netdata -- "$@"
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/css /usr/share/netdata/www/css 1.18.1~ netdata -- "$@"
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/fonts /usr/share/netdata/www/fonts 1.18.1~ netdata -- "$@"
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/images /usr/share/netdata/www/images 1.18.1~ netdata -- "$@"
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/lib /usr/share/netdata/www/lib 1.18.1~ netdata -- "$@"
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/static /usr/share/netdata/www/static 1.18.1~ netdata -- "$@"
+
+case "$1" in
+ remove) ;;
+
+ purge)
+ if dpkg-statoverride --list | grep -qw /var/cache/netdata; then
+ dpkg-statoverride --remove /var/cache/netdata
+ fi
+
+ if dpkg-statoverride --list | grep -qw /var/lib/netdata/www; then
+ dpkg-statoverride --remove /var/lib/netdata/www
+ fi
+
+ if dpkg-statoverride --list | grep -qw /var/lib/netdata/registry; then
+ dpkg-statoverride --remove /var/lib/netdata/registry
+ fi
+
+ if dpkg-statoverride --list | grep -qw /var/lib/netdata; then
+ dpkg-statoverride --remove /var/lib/netdata
+ fi
+
+ if dpkg-statoverride --list | grep -qw /var/run/netdata; then
+ dpkg-statoverride --remove /var/run/netdata
+ fi
+
+ if dpkg-statoverride --list | grep -qw /var/log/netdata; then
+ dpkg-statoverride --remove /var/log/netdata
+ fi
+ ;;
+
+ *) ;;
+
+esac
+
+#DEBHELPER#
+
+exit 0
diff --git a/contrib/debian/netdata.preinst b/contrib/debian/netdata.preinst
new file mode 100644
index 0000000..3bbdea0
--- /dev/null
+++ b/contrib/debian/netdata.preinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+set -e
+
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/.well-known /usr/share/netdata/www/.well-known 1.18.1~ netdata -- "$@"
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/css /usr/share/netdata/www/css 1.18.1~ netdata -- "$@"
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/fonts /usr/share/netdata/www/fonts 1.18.1~ netdata -- "$@"
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/images /usr/share/netdata/www/images 1.18.1~ netdata -- "$@"
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/lib /usr/share/netdata/www/lib 1.18.1~ netdata -- "$@"
+dpkg-maintscript-helper dir_to_symlink \
+ /var/lib/netdata/www/static /usr/share/netdata/www/static 1.18.1~ netdata -- "$@"
+
+#DEBHELPER#
diff --git a/contrib/debian/rules b/contrib/debian/rules
new file mode 100755
index 0000000..5be3e81
--- /dev/null
+++ b/contrib/debian/rules
@@ -0,0 +1,137 @@
+#!/usr/bin/make -f
+
+# Find the arch we are building for, as this determines
+# the location of plugins in /usr/lib
+TOP = $(CURDIR)/debian/netdata
+TEMPTOP = $(CURDIR)/debian/tmp
+
+BASE_CONFIG = system/netdata.conf
+
+SYSTEMD_VERSION = $(shell /bin/sh -c "systemd --version 2>&1 | head -n 1 | cut -f 2 -d ' '")
+
+ifeq ($(shell test $(SYSTEMD_VERSION) -ge 235 && echo "1"), 1)
+SYSTEMD_UNIT = system/netdata.service.v235
+else
+SYSTEMD_UNIT = system/netdata.service
+endif
+
+ifeq ($(shell test `uname -m` != "x86_64" && echo "1"), 1)
+HAVE_EBPF = 0
+EBPF_CONFIG = --disable-ebpf
+else
+HAVE_EBPF = 1
+endif
+
+%:
+ dh $@
+
+override_dh_installinit:
+ echo "SystemD Version: $(SYSTEMD_VERSION)"
+ echo "Using SystemD Unit: $(SYSTEMD_UNIT)"
+ cp -v $(SYSTEMD_UNIT) debian/netdata.service
+
+ dh_systemd_enable
+ dh_installinit
+
+override_dh_auto_configure:
+ if [ $(HAVE_EBPF) -eq 1 ]; then \
+ packaging/bundle-libbpf.sh . ${TOP}/usr/libexec/netdata/plugins.d; \
+ packaging/bundle-ebpf-co-re.sh . ${TOP}/usr/libexec/netdata/plugins.d; \
+ fi
+ autoreconf -ivf
+ dh_auto_configure -- --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libdir=/usr/lib \
+ --libexecdir=/usr/libexec --with-user=netdata --with-math --with-zlib --with-webdir=/var/lib/netdata/www \
+ --disable-dependency-tracking $(EBPF_CONFIG)
+
+override_dh_install:
+ cp -v $(BASE_CONFIG) debian/netdata.conf
+
+ dh_install
+
+ # Set the CUPS plugin install rule
+ #
+ mkdir -p $(TOP)-plugin-cups/usr/libexec/netdata/plugins.d
+ mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/cups.plugin \
+ $(TOP)-plugin-cups/usr/libexec/netdata/plugins.d/cups.plugin
+
+ # Add free IPMI plugin install rules
+ #
+ mkdir -p $(TOP)-plugin-freeipmi/usr/libexec/netdata/plugins.d
+ mv -f $(TEMPTOP)/usr/libexec/netdata/plugins.d/freeipmi.plugin \
+ $(TOP)-plugin-freeipmi/usr/libexec/netdata/plugins.d/freeipmi.plugin
+
+ # Set the rest of the software in the main package
+ #
+ cp -rp $(TEMPTOP)/usr $(TOP)
+ cp -rp $(TEMPTOP)/var $(TOP)
+ cp -rp $(TEMPTOP)/etc $(TOP)
+ mkdir -p "$(TOP)/var/log/netdata"
+ mkdir -p "$(TOP)/var/cache/netdata"
+ mkdir -p "$(TOP)/var/run/netdata"
+
+ # Copy the updater script
+ #
+ cp -v packaging/installer/netdata-updater.sh $(TOP)/usr/libexec/netdata/netdata-updater.sh
+
+ # Move files that local user shouldn't be editing to /usr/share/netdata
+ #
+ mkdir -p "$(TOP)/usr/share/netdata/www"
+ for D in $$(find "$(TOP)/var/lib/netdata/www/" -maxdepth 1 -type d -printf '%f '); do \
+ echo Relocating $$D; \
+ mv "$(TOP)/var/lib/netdata/www/$$D" "$(TOP)/usr/share/netdata/www/$$D"; \
+ ln -s "/usr/share/netdata/www/$$D" "$(TOP)/var/lib/netdata/www/$$D"; \
+ done
+
+ if [ $(HAVE_EBPF) -eq 1 ]; then \
+ packaging/bundle-ebpf.sh . ${TOP}/usr/libexec/netdata/plugins.d; \
+ fi
+
+ # Install go
+ #
+ debian/install_go.sh $$(cat ${CURDIR}/packaging/go.d.version) $(TOP)/usr/lib/netdata $(TOP)/usr/libexec/netdata
+
+override_dh_installdocs:
+ dh_installdocs
+
+ find . \
+ -name README.md \
+ -not -path './.travis/*' \
+ -not -path './debian/*' \
+ -not -path './contrib/*' \
+ -exec cp \
+ --parents \
+ --target $(TOP)/usr/share/doc/netdata/ \
+ {} \;
+
+override_dh_fixperms:
+ dh_fixperms
+
+ # Updater script should be executable
+ #
+ chmod 0755 $(TOP)/usr/libexec/netdata/netdata-updater.sh
+
+ # apps.plugin should only be runnable by the netdata user. It will be
+ # given extra capabilities in the postinst script.
+ #
+ chmod 0750 $(TOP)/usr/libexec/netdata/plugins.d/apps.plugin
+ chmod 0750 $(TOP)/usr/libexec/netdata/plugins.d/perf.plugin
+ chmod 0750 $(TOP)/usr/libexec/netdata/plugins.d/slabinfo.plugin
+ chmod 0750 $(TOP)/usr/libexec/netdata/plugins.d/go.d.plugin
+
+ # CUPS plugin package
+ chmod 0750 $(TOP)-plugin-cups/usr/libexec/netdata/plugins.d/cups.plugin
+
+ # freeIPMI plugin package
+ chmod 4750 $(TOP)-plugin-freeipmi/usr/libexec/netdata/plugins.d/freeipmi.plugin
+
+override_dh_installlogrotate:
+ cp system/netdata.logrotate debian/netdata.logrotate
+ dh_installlogrotate
+
+override_dh_clean:
+ dh_clean
+
+ # Tidy up copied/generated files
+ #
+ -[ -r $(CURDIR)/debian/netdata.logrotate ] && rm $(CURDIR)/debian/netdata.logrotate
+ -[ -r $(CURDIR)/debian/netdata.conffiles ] && rm $(CURDIR)/debian/netdata.conffiles
diff --git a/contrib/debian/source/format b/contrib/debian/source/format
new file mode 100644
index 0000000..89ae9db
--- /dev/null
+++ b/contrib/debian/source/format
@@ -0,0 +1 @@
+3.0 (native)
diff --git a/contrib/rhel/build-netdata-rpm.sh b/contrib/rhel/build-netdata-rpm.sh
new file mode 100755
index 0000000..e48c3c1
--- /dev/null
+++ b/contrib/rhel/build-netdata-rpm.sh
@@ -0,0 +1,56 @@
+#!/usr/bin/env bash
+
+# docker run -it --rm centos:6.9 /bin/sh
+# yum -y install rpm-build redhat-rpm-config yum-utils autoconf automake curl gcc git libmnl-devel libuuid-devel make pkgconfig zlib-devel
+
+cd "$(dirname "$0")/../../" || exit 1
+# shellcheck disable=SC1091
+source "packaging/installer/functions.sh" || exit 1
+
+set -e
+
+run autoreconf -ivf
+run ./configure --enable-maintainer-mode
+run make dist
+
+typeset version="$(grep PACKAGE_VERSION < config.h | cut -d '"' -f 2)"
+if [[ -z "${version}" ]]; then
+ run_failed "Cannot find netdata version."
+ exit 1
+fi
+
+if [[ "${version//-/}" != "$version" ]]; then
+ # Remove all -* and _* suffixes to be as close as netdata release
+ typeset versionfix="${version%%-*}"; versionfix="${versionfix%%_*}"
+ # Append the current datetime fox a 'unique' build
+ versionfix+="_$(date '+%m%d%H%M%S')"
+ # And issue hints & details on why this failed, and how to fix it
+ run_failed "Current version contains '-' which is forbidden by rpm. You must create a git annotated tag and rerun this script. Example:"
+ run_failed " git tag -a $versionfix -m 'Release by $(id -nu) on $(uname -n)' && $0"
+ exit 1
+fi
+
+
+typeset tgz="netdata-${version}.tar.gz"
+if [[ ! -f "${tgz}" ]]; then
+ run_failed "Cannot find the generated tar.gz file '${tgz}'"
+ exit 1
+fi
+
+typeset srpm="$(run rpmbuild -ts "${tgz}" | cut -d ' ' -f 2)"
+if [[ -z "${srpm}" ]] || ! [[ -f "${srpm}" ]]; then
+ run_failed "Cannot find the generated SRPM file '${srpm}'"
+ exit 1
+fi
+
+#if which yum-builddep 2>/dev/null
+#then
+# run yum-builddep "${srpm}"
+#elif which dnf 2>/dev/null
+#then
+# [ "${UID}" = 0 ] && run dnf builddep "${srpm}"
+#fi
+
+run rpmbuild --rebuild "${srpm}"
+
+run_ok "All done! Packages created in '$(rpm -E '%_rpmdir/%_arch')'"