maybe chmod 0644 'apt/apt.conf.d/50command-not-found'
maybe chmod 0644 'apt/apt.conf.d/70debconf'
maybe chmod 0644 'apt/apt.conf.d/90mintsystem'
+maybe chmod 0644 'apt/apt.conf.d/99needrestart'
maybe chmod 0644 'apt/apt.conf.d/99synaptic'
maybe chmod 0644 'apt/apt.conf.d/99update-notifier'
maybe chmod 0755 'apt/auth.conf.d'
maybe chmod 0755 'dpkg'
maybe chmod 0644 'dpkg/dpkg.cfg'
maybe chmod 0755 'dpkg/dpkg.cfg.d'
+maybe chmod 0644 'dpkg/dpkg.cfg.d/needrestart'
maybe chmod 0644 'dpkg/dpkg.cfg.d/pkg-config-hook-config'
maybe chmod 0755 'dpkg/origins'
maybe chmod 0644 'dpkg/origins/debian'
maybe chmod 0644 'mysql/mariadb.conf.d/50-server.cnf'
maybe chmod 0644 'mysql/my.cnf.fallback'
maybe chmod 0644 'nanorc'
+maybe chmod 0755 'needrestart'
+maybe chmod 0755 'needrestart/conf.d'
+maybe chmod 0644 'needrestart/conf.d/README.needrestart'
+maybe chmod 0755 'needrestart/hook.d'
+maybe chmod 0755 'needrestart/hook.d/10-dpkg'
+maybe chmod 0755 'needrestart/hook.d/20-rpm'
+maybe chmod 0755 'needrestart/hook.d/90-none'
+maybe chmod 0644 'needrestart/needrestart.conf'
+maybe chmod 0644 'needrestart/notify.conf'
+maybe chmod 0755 'needrestart/notify.d'
+maybe chmod 0755 'needrestart/notify.d/200-write'
+maybe chmod 0755 'needrestart/notify.d/400-notify-send'
+maybe chmod 0755 'needrestart/notify.d/600-mail'
+maybe chmod 0644 'needrestart/notify.d/README.needrestart'
+maybe chmod 0755 'needrestart/restart.d'
+maybe chmod 0644 'needrestart/restart.d/README.needrestart'
+maybe chmod 0755 'needrestart/restart.d/dbus.service'
+maybe chmod 0755 'needrestart/restart.d/systemd-manager'
+maybe chmod 0755 'needrestart/restart.d/sysv-init'
maybe chmod 0644 'netconfig'
maybe chmod 0755 'netplan'
maybe chmod 0644 'netplan/1-network-manager-all.yaml'
--- /dev/null
+# needrestart - Restart daemons after library updates.
+#
+# Call needrestart after package upgrades/installations and check
+# for pending service restarts. Should only be triggered if there
+# was no error during installation.
+#
+
+DPkg::Post-Invoke {"test -x /usr/lib/needrestart/apt-pinvoke && /usr/lib/needrestart/apt-pinvoke || true"; };
--- /dev/null
+# needrestart - Restart daemons after library updates.
+#
+# Scan for (successfully) installed packages,
+# triggers needrestart in apt's Dpkg::Post-Invoke
+# hook.
+
+status-logger=(test -x /usr/lib/needrestart/dpkg-status && /usr/lib/needrestart/dpkg-status || cat > /dev/null)
--- /dev/null
+Files ending with .conf and located in the /etc/needrestart/conf.d
+directory are parsed by needrestart's default configuration file.
+
+Files are parsed in order (using Perl's sort sub) and override or
+modify any previously set config option.
--- /dev/null
+#!/usr/bin/perl
+
+# needrestart - Restart daemons after library updates.
+#
+# Authors:
+# Thomas Liske <thomas@fiasko-nw.net>
+#
+# Copyright Holder:
+# 2013 - 2018 (C) Thomas Liske [http://fiasko-nw.net/~thomas/]
+#
+# License:
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this package; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+# This DPKG hook tries to find the run-level scripts of the package's binary
+# which has old libraries in use. Some logic is taken from the checkrestart
+# (part of the debian-goodies package) package by Matt Zimmerman <mdz@debian.org>,
+# Javier Fernandez-Sanguino <jfs@debian.org> et. al.
+
+use Getopt::Std;
+
+use strict;
+use warnings;
+
+system("type dpkg-query 1> /dev/null 2> /dev/null");
+exit 0 if ($? != -1 && $? >> 8);
+
+our $opt_v;
+getopts('v');
+
+sub fork_pipe(@) {
+ my $pid = open(HPIPE, '-|');
+ defined($pid) || die "Can't fork: $!\n";
+
+ if($pid == 0) {
+ close(STDIN);
+ close(STDERR) unless($opt_v);
+
+ exec(@_);
+ exit;
+ }
+
+ \*HPIPE
+}
+
+my $FN = shift || die "Usage: $0 <filename>\n";
+my $psearch = fork_pipe(qw(dpkg-query --search), $FN);
+
+my @pkgs;
+while(<$psearch>) {
+ chomp;
+
+ next if(/^local diversion/);
+ next unless(/:/);
+
+ next unless(/(\S+): $FN$/);
+
+ push(@pkgs, $1);
+}
+close($psearch);
+
+exit(0) unless($#pkgs > -1);
+
+foreach my $pkg (@pkgs) {
+ print "PACKAGE|$pkg\n";
+
+ my $plist = fork_pipe(qw(dpkg-query --listfiles), $pkg);
+ while(<$plist>) {
+ print "RC|$1\n" if(m@^/etc/init.d/(.+)$@);
+ }
+ close($plist);
+}
+
+exit(1);
--- /dev/null
+#!/usr/bin/perl
+
+# needrestart - Restart daemons after library updates.
+#
+# Authors:
+# Thomas Liske <thomas@fiasko-nw.net>
+#
+# Copyright Holder:
+# 2013 - 2018 (C) Thomas Liske [http://fiasko-nw.net/~thomas/]
+#
+# License:
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this package; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+# This RPM hook tries to find the run-level scripts of the package's binary
+# which has old libraries in use.
+
+use Getopt::Std;
+
+use strict;
+use warnings;
+
+system("type rpm 1> /dev/null 2> /dev/null");
+exit 0 if ($? != -1 && $? >> 8);
+
+our $opt_v;
+getopts('c:v');
+
+sub fork_pipe(@) {
+ my $pid = open(HPIPE, '-|');
+ defined($pid) || die "Can't fork: $!\n";
+
+ if($pid == 0) {
+ close(STDIN);
+ close(STDERR) unless($opt_v);
+
+ exec(@_);
+ exit;
+ }
+
+ \*HPIPE
+}
+
+my $FN = shift || die "Usage: $0 <filename>\n";
+my $psearch = fork_pipe(qw(rpm -q --file), $FN);
+
+my @pkgs;
+while(<$psearch>) {
+ chomp;
+
+ next if(/^file .+ is not owned by any package/);
+
+ push(@pkgs, $_);
+}
+close($psearch);
+
+exit(0) unless($#pkgs > -1);
+
+foreach my $pkg (@pkgs) {
+ print "PACKAGE|$pkg\n";
+
+ my $plist = fork_pipe(qw(rpm -q --filesbypkg), $pkg);
+ while(<$plist>) {
+ print "RC|$2\n" if(m@^\S+\s+/etc(/rc\.d)?/init\.d/(.+)$@);
+ }
+ close($plist);
+}
+
+exit(1);
--- /dev/null
+#!/usr/bin/perl
+
+# needrestart - Restart daemons after library updates.
+#
+# Authors:
+# Thomas Liske <thomas@fiasko-nw.net>
+#
+# Copyright Holder:
+# 2013 - 2018 (C) Thomas Liske [http://fiasko-nw.net/~thomas/]
+#
+# License:
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this package; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#
+
+# This fallback hook tries the guess the rc script name from the binary name.
+# It might work with programs which are not installed via an (supported)
+# package manager like dpkg or rpm.
+
+use Getopt::Std;
+
+use strict;
+use warnings;
+
+our $opt_v;
+getopts('c:v');
+
+sub check_rc($) {
+ my $bn = shift;
+ my $rc = "/etc/init.d/$bn";
+
+ return ($bn) if(-x $rc);
+
+ return ();
+}
+
+my $FN = shift || die "Usage: $0 <filename>\n";
+
+$FN =~ m@/(([^/]+)d?)$@;
+
+my @rc;
+push(@rc, check_rc($1));
+push(@rc, check_rc($2)) if($1 ne $2);
+
+exit(0) unless($#rc > -1);
+
+foreach my $rc (@rc) {
+ print "PACKAGE|$rc\n";
+ print "RC|$rc\n";
+}
+
+exit(1);
--- /dev/null
+
+# needrestart - Restart daemons after library updates.
+#
+# Authors:
+# Thomas Liske <thomas@fiasko-nw.net>
+#
+# Copyright Holder:
+# 2013 - 2018 (C) Thomas Liske [http://fiasko-nw.net/~thomas/]
+#
+# License:
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+
+# This is the configuration file of needrestart. This is perl syntax.
+# needrstart uses reasonable default values, you might not need to
+# change anything.
+
+# Verbosity:
+# 0 => quiet
+# 1 => normal (default)
+# 2 => verbose
+#$nrconf{verbosity} = 2;
+
+# Path of the package manager hook scripts.
+#$nrconf{hook_d} = '/etc/needrestart/hook.d';
+
+# Path of user notification scripts.
+#$nrconf{notify_d} = '/etc/needrestart/notify.d';
+
+# Path of restart scripts.
+#$nrconf{restart_d} = '/etc/needrestart/restart.d';
+
+# Disable sending notifications to user sessions running obsolete binaries
+# using scripts from $nrconf{notify_d}.
+#$nrconf{sendnotify} = 0;
+
+# If needrestart detects systemd it assumes that you use systemd's pam module.
+# This allows needrestart to easily detect user session. In case you use
+# systemd *without* pam_systemd.so you should set has_pam_systemd to false
+# to enable legacy session detection!
+#$nrconf{has_pam_systemd} = 0;
+
+# Restart mode: (l)ist only, (i)nteractive or (a)utomatically.
+#
+# ATTENTION: If needrestart is configured to run in interactive mode but is run
+# non-interactive (i.e. unattended-upgrades) it will fallback to list only mode.
+#
+#$nrconf{restart} = 'i';
+
+# Use preferred UI package.
+#$nrconf{ui} = 'NeedRestart::UI::stdio';
+
+# Change default answer to 'no' in (i)nteractive mode.
+#$nrconf{defno} = 1;
+
+# Set UI mode to (e)asy or (a)dvanced.
+#$nrconf{ui_mode} = 'e';
+
+# Print a combined `systemctl restart` command line for skipped services.
+#$nrconf{systemctl_combine} = 1;
+
+# Blacklist binaries (list of regex).
+$nrconf{blacklist} = [
+ # ignore sudo (not a daemon)
+ qr(^/usr/bin/sudo(\.dpkg-new)?$),
+
+ # ignore DHCP clients
+ qr(^/sbin/(dhclient|dhcpcd5|pump|udhcpc)(\.dpkg-new)?$),
+
+ # ignore apt-get (Debian Bug#784237)
+ qr(^/usr/bin/apt-get(\.dpkg-new)?$),
+];
+
+# Blacklist services (list of regex) - USE WITH CARE.
+# You should prefere to put services to $nrconf{override_rc} instead.
+# Any service listed in $nrconf{blacklist_rc} we be ignored completely!
+#$nrconf{blacklist_rc} = [
+#];
+
+# Override service default selection (hash of regex).
+$nrconf{override_rc} = {
+ # DBus
+ qr(^dbus) => 0,
+
+ # display managers
+ qr(^gdm) => 0,
+ qr(^kdm) => 0,
+ qr(^nodm) => 0,
+ qr(^sddm) => 0,
+ qr(^wdm) => 0,
+ qr(^xdm) => 0,
+ qr(^lightdm) => 0,
+ qr(^slim) => 0,
+ qr(^lxdm) => 0,
+
+ # networking stuff
+ qr(^bird) => 0,
+ qr(^network-manager) => 0,
+ qr(^NetworkManager) => 0,
+ qr(^wpa_supplicant) => 0,
+ qr(^openvpn) => 0,
+ qr(^quagga) => 0,
+ qr(^tinc) => 0,
+ qr(^(open|free|libre|strong)swan) => 0,
+
+ # gettys
+ qr(^getty@.+\.service) => 0,
+
+ # systemd --user
+ qr(^user@\d+\.service) => 0,
+
+ # misc
+ qr(^zfs-fuse) => 0,
+ qr(^mythtv-backend) => 0,
+ qr(^xendomains) => 0,
+ qr(^lxcfs) => 0,
+ qr(^libvirt) => 0,
+ qr(^docker) => 0,
+
+ # workaround for broken systemd-journald
+ # (see also Debian Bug#771122 & #771254)
+ qr(^systemd-journald) => 0,
+
+ # more systemd stuff
+ # (see also Debian Bug#784238 & #784437)
+ qr(^emergency\.service$) => 0,
+ qr(^rescue\.service$) => 0,
+
+ # do not restart oneshot services, see #862840
+ qr(^apt-daily\.service$) => 0,
+ qr(^apt-daily-upgrade\.service$) => 0,
+ qr(^unattended-upgrades\.service$) => 0,
+
+ # ignore rc-local.service, see #852864
+ qr(^rc-local\.service$) => 0,
+
+ # don't restart systemd-logind, see #798097
+ qr(^systemd-logind) => 0,
+};
+
+# Override container default selection (hash of regex).
+$nrconf{override_cont} = {
+};
+
+# Disable interpreter scanners.
+#$nrconf{interpscan} = 0;
+
+# Ignore script files matching these regexs:
+$nrconf{blacklist_interp} = [
+ # ignore temporary files
+ qr(^/tmp/),
+ qr(^/var/),
+ qr(^/run/),
+
+];
+
+# Ignore +x mapped files matching one of these regexs:
+$nrconf{blacklist_mappings} = [
+ # special device paths
+ qr(^/(SYSV00000000( \(deleted\))?|drm(\s|$)|dev/)),
+
+ # aio(7) mapping
+ qr(^/\[aio\]),
+
+ # Oil Runtime Compiler's JIT files
+ qr#/orcexec\.[\w\d]+( \(deleted\))?$#,
+
+ # plasmashell (issue #65)
+ qr(/#\d+( \(deleted\))?$),
+
+ # Java Native Access
+ qr#/tmp/jna--#,
+
+ # Java Foreign Function Interface
+ qr#^/tmp/jffi#,
+];
+
+# Verify mapped files in fileystem:
+# 0 : enabled (default)
+# -1: ignore non-existing files, workaround for broken grsecurity kernels
+# 1 : disable check completely, rely on content of maps file only
+$nrconf{skip_mapfiles} = (-d '/proc/sys/kernel/grsecurity' ? -1 : 0);
+
+# Enable/disable hints on pending kernel upgrades:
+# 1: requires the user to acknowledge pending kernels
+# 0: disable kernel checks completely
+# -1: print kernel hints to stderr only
+#$nrconf{kernelhints} = -1;
+
+# Nagios Plugin: configure return code use by nagios
+# as service status[1].
+#
+# [1] https://nagios-plugins.org/doc/guidelines.html#AEN78
+#
+# Default:
+# 'nagios-status' => {
+# 'sessions' => 1,
+# 'services' => 2,
+# 'kernel' => 2,
+# 'ucode' => 2,
+# 'containers' => 1
+# },
+#
+# Example: to ignore outdated sessions (status OK)
+# $nrconf{'nagios-status'}->{sessions} = 0;
+
+
+# Read additional config snippets.
+if(-d q(/etc/needrestart/conf.d)) {
+ foreach my $fn (sort </etc/needrestart/conf.d/*.conf>) {
+ print STDERR "$LOGPREF eval $fn\n" if($nrconf{verbose});
+ eval do { local(@ARGV, $/) = $fn; <>};
+ die "Error parsing $fn: $@" if($@);
+ }
+}
--- /dev/null
+# needrestart - Restart daemons after library updates.
+#
+# Authors:
+# Thomas Liske <thomas@fiasko-nw.net>
+#
+# Copyright Holder:
+# 2013 - 2018 (C) Thomas Liske [http://fiasko-nw.net/~thomas/]
+#
+# License:
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+
+# Configure notification globals (shell syntax)
+
+# Disable write to tty (notify.d/200-write)
+#NR_NOTIFYD_DISABLE_WRITE='1'
+
+# Disable needrestart-session (notify.d/300-needrestart-session)
+#NR_NOTIFYD_DISABLE_NEEDRESTART_SESSION='1'
+
+# Disable libnotify (notify.d/400-notify-send)
+#NR_NOTIFYD_DISABLE_NOTIFY_SEND='1'
+
+# Disable mail to user (notify.d/600-mail)
+NR_NOTIFYD_DISABLE_MAIL='1'
+
+
+# Where to find the shell function library from gettext-base
+#GETTEXTLIB='/usr/bin/gettext.sh'
--- /dev/null
+#!/bin/sh
+
+# needrestart - Restart daemons after library updates.
+#
+# Authors:
+# Thomas Liske <thomas@fiasko-nw.net>
+#
+# Copyright Holder:
+# 2013 - 2018 (C) Thomas Liske [http://fiasko-nw.net/~thomas/]
+#
+# License:
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+
+# Use write to notify users on TTYs.
+
+. /usr/lib/needrestart/notify.d.sh
+
+if [ "$NR_NOTIFYD_DISABLE_WRITE" = '1' ]; then
+ echo "[$0] disabled in global config" 1>&2
+ exit 1
+fi
+
+case "$NR_SESSION" in
+ /dev/tty*|/dev/pts*)
+ echo "[$0] notify user $NR_USERNAME on $NR_SESSION" 1>&2
+ {
+ echo
+ gettext 'Your session is running obsolete binaries or libraries as listed below.
+Please consider a relogin or restart of the affected processes!'
+ echo
+ echo
+ cat -n
+ echo
+ } | write "$NR_USERNAME" "$NR_SESSION" 2> /dev/null
+ ;;
+ *)
+ echo "[$0] skip session w/o tty" 1>&2
+ exit 1
+ ;;
+esac
--- /dev/null
+#!/bin/sh
+
+# needrestart - Restart daemons after library updates.
+#
+# Authors:
+# Thomas Liske <thomas@fiasko-nw.net>
+#
+# Copyright Holder:
+# 2013 - 2018 (C) Thomas Liske [http://fiasko-nw.net/~thomas/]
+#
+# License:
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+
+# Use notify-send (from libnotify-bin) to notify a user session via dbus.
+
+NSEND='/usr/bin/notify-send'
+test -x "$NSEND" || exit 1
+
+. /usr/lib/needrestart/notify.d.sh
+
+if [ "$NR_NOTIFYD_DISABLE_NOTIFY_SEND" = '1' ]; then
+ echo "[$0] disabled in global config" 1>&2
+ exit 1
+fi
+
+case "$NR_SESSION" in
+ session*)
+ # cleanup environment
+ unset DBUS_SESSION_BUS_ADDRESS
+ export DISPLAY=$(sed -z -n s/^DISPLAY=//p "/proc/$NR_SESSPPID/environ")
+ export XAUTHORITY=$(sed -z -n s/^XAUTHORITY=//p "/proc/$NR_SESSPPID/environ")
+
+ if [ -z "$DISPLAY" ]; then
+ echo "[$0] could not find DISPLAY for $NR_USERNAME on $NR_SESSION" 1>&2
+ exit 1
+ fi
+
+ echo "[$0] notify user $NR_USERNAME on $DISPLAY" 1>&2
+
+ MSGTITLE=$(gettext 'Relogin or restarts required!')
+ MSGBODY=$(gettext 'Your session is running obsolete binaries or libraries as listed below.
+<i><b>Please consider a relogin or restart of the affected processes!</b></i>')'\n'$(cat)
+
+ su -p -s /bin/sh -c "$NSEND -u critical -i dialog-warning \"$MSGTITLE\" \"$MSGBODY\"" "$NR_USERNAME"
+ ;;
+ *)
+ echo "[$0] skip session '$NR_SESSION'" 1>&2
+ exit 1;
+ ;;
+esac
--- /dev/null
+#!/bin/sh
+
+# needrestart - Restart daemons after library updates.
+#
+# Authors:
+# Thomas Liske <thomas@fiasko-nw.net>
+#
+# Copyright Holder:
+# 2013 - 2018 (C) Thomas Liske [http://fiasko-nw.net/~thomas/]
+#
+# License:
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+
+# Use /usr/bin/mail to notify a user via e-mail.
+
+MAILX='/usr/bin/mail'
+test -x "$MAILX" || exit 1
+
+. /usr/lib/needrestart/notify.d.sh
+
+if [ "$NR_NOTIFYD_DISABLE_MAIL" = '1' ]; then
+ echo "[$0] disabled in global config" 1>&2
+ exit 1
+fi
+
+# Skip system users
+NR_USERID=`id -u "$NR_USERNAME"`
+if [ "0$NR_USERID" -gt 0 -a "0$NR_USERID" -lt 1000 ]; then
+ echo "[$0] do not notify system-user $NR_USERNAME via mail" 1>&2
+ exit 1
+fi
+
+echo "[$0] notify user $NR_USERNAME on $NR_SESSION via mail" 1>&2
+
+{
+ _NR_FQDN=$(hostname -f)
+ eval_gettext 'Your session on host $_NR_FQDN ($NR_SESSION) is running obsolete binaries or libraries as listed below.'
+ echo
+ echo
+ gettext "Please consider a relogin or restart of the affected processes!"
+ echo
+ echo
+ cat
+} | fold -s -w 72 | "$MAILX" -s "Relogin or restarts on host $(hostname) required!" "$NR_USERNAME"
--- /dev/null
+Files located in /etc/needrestart/notify.d are used to notify running
+user sessions about usage of outdated libraries.
+
+needrestart runs any executable file (except *~, *.dpkg-*, *.ex) naturally
+sorted by the filename for each notification. If the result code is 0 than
+needrestart will stop to run the remaining notification binaries.
+
+
+The following environment variables are set:
+
+- NR_SESSION
+ Session identifier (tty device node or systemd's session name).
+- NR_SESSPPID
+ The first pid in the session detected by needrestart.
+- NR_UID
+ User ID of the session owner.
+- NR_USERNAME
+ Username of the session owner.
+
+
+The following file descriptors are used:
+
+- /dev/stdin
+ The list of obsolete processes.
+- /dev/stdout
+ Closed.
+- /dev/stderr
+ Available in verbose mode (-v).
--- /dev/null
+Files located in /etc/needrestart/restart.d are used for services
+requiring a special procedure for restarting instead of
+systemctl/service command.
+
+Needrestart uses executable files matching the complete service
+names. If the host uses systemd the service names have '.service' as a
+suffix (dbus vs. dbus.service). Needrestart uses the systemctl/service
+command if no executable file is available to override the default
+behavior.
+
+The environment variable NR_VERBOSE will be set to '1' if the
+executable should be verbose.
--- /dev/null
+#!/bin/sh
+
+# needrestart - Restart daemons after library updates.
+#
+# Authors:
+# Thomas Liske <thomas@fiasko-nw.net>
+#
+# Copyright Holder:
+# 2013 - 2018 (C) Thomas Liske [http://fiasko-nw.net/~thomas/]
+#
+# License:
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+
+# Restart dbus and affiliated services under systemd using a procedure
+# suggested by @Vladimir-csp in github issue #44.
+
+# enable xtrace if we should be verbose
+if [ "$NR_VERBOSE" = '1' ]; then
+ set -x
+fi
+
+# check if there is a Display Manager running
+STATE_DM=$(systemctl show display-manager --property=ActiveState)
+
+# prepare well-known list of services requiring restart after restarting D-Bus
+RESTART_CHK="NetworkManager.service"
+RESTART_SVC="systemd-logind.service systemd-journald.service"
+for svc in $RESTART_CHK; do
+ if [ "$(systemctl show $svc --property=ActiveState)" = 'ActiveState=active' ]; then
+ RESTART_SVC="$RESTART_SVC $svc"
+ fi
+done
+
+# stop Display Manager if running
+if [ "$STATE_DM" = 'ActiveState=active' ]; then
+ systemctl stop display-manager.service
+fi
+
+# restard D-Bus
+systemctl restart dbus.service
+
+# reexec systemd
+systemctl daemon-reexec
+
+# restart daemons that directly depend on D-Bus
+systemctl restart $RESTART_SVC
+
+# start Display Manager again
+if [ "$STATE_DM" = 'ActiveState=active' ]; then
+ systemctl start display-manager.service
+fi
--- /dev/null
+#!/bin/sh
+
+# needrestart - Restart daemons after library updates.
+#
+# Authors:
+# Thomas Liske <thomas@fiasko-nw.net>
+#
+# Copyright Holder:
+# 2013 - 2018 (C) Thomas Liske [http://fiasko-nw.net/~thomas/]
+#
+# License:
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+
+# enable xtrace if we should be verbose
+if [ "$NR_VERBOSE" = '1' ]; then
+ set -x
+fi
+
+exec systemctl daemon-reexec
--- /dev/null
+#!/bin/sh
+
+# needrestart - Restart daemons after library updates.
+#
+# Authors:
+# Thomas Liske <thomas@fiasko-nw.net>
+#
+# Copyright Holder:
+# 2013 - 2018 (C) Thomas Liske [http://fiasko-nw.net/~thomas/]
+#
+# License:
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+
+# enable xtrace if we should be verbose
+if [ "$NR_VERBOSE" = '1' ]; then
+ set -x
+fi
+
+exec telinit u