diff options
author | Sam Hartman <hartmans@debian.org> | 2021-02-24 13:27:05 -0500 |
---|---|---|
committer | Steve Langasek <steve.langasek@canonical.com> | 2021-09-15 17:52:36 -0700 |
commit | 952595e2b7cbcb2c7964c4c60c5d4a8fc5f56046 (patch) | |
tree | c656488832c93eab030ef16d1ff09719fa886fd2 | |
parent | eade3115c8869136ed5a8579a6c8797b4b822796 (diff) | |
download | pam-952595e2b7cbcb2c7964c4c60c5d4a8fc5f56046.tar.gz pam-952595e2b7cbcb2c7964c4c60c5d4a8fc5f56046.tar.bz2 pam-952595e2b7cbcb2c7964c4c60c5d4a8fc5f56046.zip |
debian/libpam0g.postinst: Handle systemd units
Debian policy now considers init scripts optional. When booted with
systemd, use systemd facilities for determining whether a service is
enabled and restarting. We might want to try restarting services that
are running even if disabled. I don't think we did that in the init
script case, and I don't know a good way to determine which units
should be restarted.
* Update template description because the services are no longer
considered init scripts on most systems. It wouldn't be worth the
translation churn alone, but we have another template change in the
same version.
* Override lintian warning regarding calling systemctl.
oops lintian
-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 |