]> arthur.barton.de Git - netdata.git/commitdiff
Add Debian packaging
authorMatthew Newton <mcn4@leicester.ac.uk>
Fri, 1 Apr 2016 16:25:54 +0000 (17:25 +0100)
committerMatthew Newton <mcn4@leicester.ac.uk>
Fri, 8 Apr 2016 22:37:27 +0000 (23:37 +0100)
16 files changed:
contrib/README.md [new file with mode: 0644]
contrib/debian/changelog [new file with mode: 0644]
contrib/debian/compat [new file with mode: 0644]
contrib/debian/control [new file with mode: 0644]
contrib/debian/copyright [new file with mode: 0644]
contrib/debian/netdata.conf [new file with mode: 0644]
contrib/debian/netdata.default [new file with mode: 0644]
contrib/debian/netdata.docs [new file with mode: 0644]
contrib/debian/netdata.init [new file with mode: 0755]
contrib/debian/netdata.install [new file with mode: 0644]
contrib/debian/netdata.lintian-overrides [new file with mode: 0644]
contrib/debian/netdata.postinst.in [new file with mode: 0644]
contrib/debian/netdata.postrm [new file with mode: 0644]
contrib/debian/netdata.service [new file with mode: 0644]
contrib/debian/rules [new file with mode: 0755]
contrib/debian/source/format [new file with mode: 0644]

diff --git a/contrib/README.md b/contrib/README.md
new file mode 100644 (file)
index 0000000..4578989
--- /dev/null
@@ -0,0 +1,49 @@
+# 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:
+
+    ~/netdata$ ln -s contrib/debian
+
+Then build the debian package:
+
+    ~/netdata$ 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.
+
+    ~/netdata$ ls ../*.deb
+    ../netdata_1.0.0_amd64.deb
+    ~/netdata$ sudo dpkg -i ../netdata_1.0.0_amd64.deb
+
+
+### Building for a Debian system without systemd
+
+The included packaging is designed for modern Debian systems that
+are based on systemd. To build non-systemd packages (for example,
+for Debian wheezy), you will need to make a couple of minor
+updates first.
+
+* edit `contrib/debian/rules` and adjust the `dh` rule near the
+  top to remove systemd (see comments in that file).
+
+* edit `contrib/debian/control`: remove `dh-systemd` from the
+  Build-Depends list, and add `pkg-config` to it.
+
+Then proceed as the main instructions above.
+
+### 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 (file)
index 0000000..795eaad
--- /dev/null
@@ -0,0 +1,5 @@
+netdata (1.0.0) UNRELEASED; urgency=medium
+
+  * Initial release.
+
+ -- Matthew Newton <mcn4@leicester.ac.uk>  Fri, 01 Apr 2016 17:24:11 +0100
diff --git a/contrib/debian/compat b/contrib/debian/compat
new file mode 100644 (file)
index 0000000..ec63514
--- /dev/null
@@ -0,0 +1 @@
+9
diff --git a/contrib/debian/control b/contrib/debian/control
new file mode 100644 (file)
index 0000000..c0312c6
--- /dev/null
@@ -0,0 +1,24 @@
+Source: netdata
+Build-Depends: debhelper (>= 9),
+               dh-autoreconf,
+               dh-systemd (>= 1.5),
+               dpkg-dev (>= 1.13.19),
+               zlib1g-dev
+Section: net
+Priority: optional
+Maintainer: Costa Tsaousis <costa@tsaousis.gr>
+Standards-Version: 3.9.6
+Homepage: https://github.com/firehol/netdata/wiki
+
+Package: netdata
+Architecture: any
+Depends: adduser,
+         libcap2-bin (>= 1:2.0),
+         lsb-base (>= 3.1-23.2),
+         ${misc:Depends},
+         ${shlibs:Depends}
+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.
diff --git a/contrib/debian/copyright b/contrib/debian/copyright
new file mode 100644 (file)
index 0000000..11a3d63
--- /dev/null
@@ -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/firehol/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/netdata.conf b/contrib/debian/netdata.conf
new file mode 100644 (file)
index 0000000..a963d80
--- /dev/null
@@ -0,0 +1,16 @@
+# NetData Configuration
+
+# The current full configuration can be retrieved from the running
+# server at the URL
+#
+#   http://localhost:19999/netdata.conf
+#
+# for example:
+#
+#   wget -O /etc/netdata/netdata.conf http://localhost:19999/netdata.conf
+#
+
+[global]
+       run as user = netdata
+       web files owner = root
+       web files group = netdata
diff --git a/contrib/debian/netdata.default b/contrib/debian/netdata.default
new file mode 100644 (file)
index 0000000..eb1a690
--- /dev/null
@@ -0,0 +1,4 @@
+# Extra arguments to pass to netdata
+#
+#EXTRA_OPTS=""
+
diff --git a/contrib/debian/netdata.docs b/contrib/debian/netdata.docs
new file mode 100644 (file)
index 0000000..56631ab
--- /dev/null
@@ -0,0 +1 @@
+ChangeLog
diff --git a/contrib/debian/netdata.init b/contrib/debian/netdata.init
new file mode 100755 (executable)
index 0000000..7403b45
--- /dev/null
@@ -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 $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: /etc/init.d/cron {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 (file)
index 0000000..45d42b6
--- /dev/null
@@ -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 (file)
index 0000000..45b2d86
--- /dev/null
@@ -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.in b/contrib/debian/netdata.postinst.in
new file mode 100644 (file)
index 0000000..5a4e41a
--- /dev/null
@@ -0,0 +1,41 @@
+#! /bin/sh
+
+set -e
+
+case "$1" in
+  configure)
+        if [ -z "$2" ]; then
+          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
+
+          if ! dpkg-statoverride --list /var/lib/netdata >/dev/null 2>&1; then
+              dpkg-statoverride --update --add root 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
+
+        fi
+
+        chown -R root:netdata /usr/share/netdata/*
+        chown -R root:netdata /usr/lib/@DEB_HOST_MULTIARCH@/netdata/plugins.d
+        setcap cap_dac_read_search,cap_sys_ptrace+ep /usr/lib/@DEB_HOST_MULTIARCH@/netdata/plugins.d/apps.plugin
+
+#PERMS#
+        ;;
+esac
+
+#DEBHELPER#
+
+exit 0
+
diff --git a/contrib/debian/netdata.postrm b/contrib/debian/netdata.postrm
new file mode 100644 (file)
index 0000000..4ab4eea
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/sh
+
+set -e
+
+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; then
+                       dpkg-statoverride --remove /var/lib/netdata
+               fi
+
+               if getent passwd netdata >/dev/null; then
+                       if [ -x /usr/sbin/deluser ]; then
+                               deluser --quiet --system netdata || echo "Unable to remove netdata user"
+                       fi
+               fi
+
+               if getent group netdata >/dev/null; then
+                       if [ -x /usr/sbin/delgroup ]; then
+                               delgroup --quiet --system netdata || echo "Unable to remove netdata group"
+                       fi
+               fi
+
+               ;;
+
+       *)
+               ;;
+esac
+
+#DEBHELPER#
+
+exit 0
+
diff --git a/contrib/debian/netdata.service b/contrib/debian/netdata.service
new file mode 100644 (file)
index 0000000..e62ce4e
--- /dev/null
@@ -0,0 +1,14 @@
+[Unit]
+Description=netdata real-time system monitoring
+After=network.target
+
+[Service]
+Type=simple
+EnvironmentFile=-/etc/default/netdata
+ExecStart=/usr/sbin/netdata -nd $EXTRA_OPTS
+TimeoutStopSec=30
+Restart=always
+RestartSec=5
+
+[Install]
+WantedBy=multi-user.target
diff --git a/contrib/debian/rules b/contrib/debian/rules
new file mode 100755 (executable)
index 0000000..ec4ec41
--- /dev/null
@@ -0,0 +1,87 @@
+#!/usr/bin/make -f
+
+# Find the arch we are building for, as this determines
+# the location of plugins in /usr/lib
+DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
+TOP = $(CURDIR)/debian/netdata
+
+%:
+       # For jessie and beyond
+       #
+       dh $@ --with autoreconf,systemd
+
+       # For wheezy or other non-systemd distributions use the following. You
+       # should also see contrib/README.md which gives details of updates to
+       # make to debian/control.
+       #
+       #dh $@ --with autoreconf
+
+override_dh_auto_configure:
+       dh_auto_configure -- --with-math --with-webdir=/var/lib/netdata/www
+
+debian/%.postinst: debian/%.postinst.in
+       sed 's/@DEB_HOST_MULTIARCH@/$(DEB_HOST_MULTIARCH)/g' $< > $@
+
+override_dh_install: debian/netdata.postinst
+       dh_install
+
+       # Remove unneeded .keep files
+       #
+       find "$(TOP)" -name .keep -exec rm '{}' ';'
+
+       # Move files that local user shouldn't be editing to /usr/share/netdata
+       #
+       mkdir -p "$(TOP)/usr/share/netdata"
+       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/$$D"; \
+               ln -s "/usr/share/netdata/$$D" "$(TOP)/var/lib/netdata/www/$$D"; \
+       done
+
+       # Update postinst to set correct group for www files on installation.
+       # Should probably be dpkg-statoverride really, but that gets *really*
+       # messy. We also set all web files in /var as conffiles so an upgrade
+       # doesn't splat them.
+       #
+       for D in $$(find "$(TOP)/var/lib/netdata/www/" -maxdepth 1 -type f -printf '%f '); do \
+               echo Updating postinst for $$D; \
+               sed -i "s/^#PERMS#/chgrp netdata \/var\/lib\/netdata\/www\/$$D\n#PERMS#/g" \
+                       $(CURDIR)/debian/netdata.postinst; \
+               echo "/var/lib/netdata/www/$$D" >> $(CURDIR)/debian/netdata.conffiles; \
+       done
+       sed -i "/^#PERMS#/d" $(CURDIR)/debian/netdata.postinst
+
+override_dh_installdocs:
+       dh_installdocs
+
+       # Docs should not be under /usr/lib
+       #
+       mv $(TOP)/usr/lib/$(DEB_HOST_MULTIARCH)/netdata/plugins.d/README.md \
+               $(TOP)/usr/share/doc/netdata/README.plugins.md
+       mv $(TOP)/usr/lib/$(DEB_HOST_MULTIARCH)/netdata/charts.d/README.md \
+               $(TOP)/usr/share/doc/netdata/README.charts.md
+
+       # This doc is currently empty, so no point installing it.
+       #
+       rm $(TOP)/usr/lib/$(DEB_HOST_MULTIARCH)/netdata/node.d/README.md
+
+override_dh_fixperms:
+       dh_fixperms
+
+       # apps.plugin should only be runnable by the netdata user. It will be
+       # given extra capabilities in the postinst script.
+       #
+       chmod 0754 $(TOP)/usr/lib/$(DEB_HOST_MULTIARCH)/netdata/plugins.d/apps.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.postinst ] && rm $(CURDIR)/debian/netdata.postinst
+       -[ -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 (file)
index 0000000..89ae9db
--- /dev/null
@@ -0,0 +1 @@
+3.0 (native)