aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/libpam0g.lintian-overrides3
-rw-r--r--debian/libpam0g.postinst54
-rw-r--r--debian/libpam0g.templates2
3 files changed, 45 insertions, 14 deletions
diff --git a/debian/libpam0g.lintian-overrides b/debian/libpam0g.lintian-overrides
index f66356af..5f36562d 100644
--- a/debian/libpam0g.lintian-overrides
+++ b/debian/libpam0g.lintian-overrides
@@ -6,3 +6,6 @@ libpam0g: package-name-doesnt-match-sonames libpam0 libpam-misc0 libpamc0
# before
libpam0g: no-debconf-config
libpam0g: postinst-uses-db-input
+# Yes, we want to use systemctl; if the service is running we do need
+# to restart it. We have already asked the admin.
+libpam0g: maintainer-script-calls-systemctl
diff --git a/debian/libpam0g.postinst b/debian/libpam0g.postinst
index 55928557..23320c8f 100644
--- a/debian/libpam0g.postinst
+++ b/debian/libpam0g.postinst
@@ -52,7 +52,44 @@ filerc() {
echo ""
}
-installed_services() {
+if test -d /run/systemd/system; then
+ is_service_configured() {
+ systemctl is-enabled --quiet $1 || return 1
+ }
+ restart_service() {
+ if systemctl try-restart $1; then
+ :
+ else
+ failed = "$failed $1"
+ fi
+ }
+else # not systemd
+ is_service_configured() {
+ idl="/etc/init.d/${service}"
+ if [ -n "$idl" ] && [ -x $idl ]; then
+return 0
+ else
+ return 1
+ fi
+ }
+
+ restart_service() {
+ service="$1"
+ idl="invoke-rc.d ${service}"
+ echo -n " $service: stopping..." 2>&1
+ $idl stop > /dev/null 2>&1 || true
+ sleep 1
+ echo -n "starting..." 2>&1
+ if $idl start > /dev/null 2>&1; then
+ echo "done." 2>&1
+ else
+ echo "FAILED! ($?)" 2>&1
+ failed="$service $failed"
+ fi
+ }
+fi
+
+ installed_services() {
check="$@"
# Only get the ones that are installed, and configured
@@ -75,10 +112,10 @@ installed_services() {
for service in $check; do
idl="/etc/init.d/${service}"
- if [ -n "$idl" ] && [ -x $idl ]; then
+ if is_service_configured $service; then
services="$service $services"
else
- echo "WARNING: init script for $service not found." >&2
+ echo "WARNING: $service not configured." >&2
fi
done
echo "$services"
@@ -152,16 +189,7 @@ then
continue
;;
esac
- echo -n " $service: stopping..."
- $idl stop > /dev/null 2>&1 || true
- sleep 1
- echo -n "starting..."
- if $idl start > /dev/null 2>&1; then
- echo "done."
- else
- echo "FAILED! ($?)"
- failed="$service $failed"
- fi
+ restart_service "$service"
done
echo
if [ -n "$failed" ]; then
diff --git a/debian/libpam0g.templates b/debian/libpam0g.templates
index 64a616ac..6026ee73 100644
--- a/debian/libpam0g.templates
+++ b/debian/libpam0g.templates
@@ -3,7 +3,7 @@ Type: string
_Description: Services to restart for PAM library upgrade:
Most services that use PAM need to be restarted to use modules built for
this new version of libpam. Please review the following space-separated
- list of init.d scripts for services to be restarted now, and correct it
+ list of services to be restarted now, and correct it
if needed.
Template: libpam0g/xdm-needs-restart