diff options
-rw-r--r-- | debian/libpam0g.lintian-overrides | 3 | ||||
-rw-r--r-- | debian/libpam0g.postinst | 54 | ||||
-rw-r--r-- | debian/libpam0g.templates | 2 |
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 |