dh_installsystemd - why deactivate services in postrm instead of prerm?

Daniele Nicolodi daniele at grinta.net
Wed Jun 27 19:20:55 BST 2018

On 6/27/18 11:48 AM, Michael Biebl wrote:
> Hi Daniele
> Am 27.06.2018 um 19:39 schrieb Daniele Nicolodi:
>> Hello,
>> I'm working on dh_installsystemduser, the equivalent of
>> dh_installsystemd for user instance systemd units. In the process I'm
>> trying to understand why dh_installsystemd works the way it does.
>> dh_installsystemd generates maintainer scripts code blocks that
>> deactivates installed unit. Why is it that done at postrm stage and not
>> at prerm stage? It seems that the later is the most common place where
>> to clean up on package removal, but I'm probably missing something.
> Which part exactly do you mean? The bits that mask a service?

All of the postrm code block:

if [ "$1" = "remove" ]; then
	if [ -x "/usr/bin/deb-systemd-helper" ]; then
		deb-systemd-helper mask #UNITFILES# >/dev/null || true

if [ "$1" = "purge" ]; then
	if [ -x "/usr/bin/deb-systemd-helper" ]; then
		deb-systemd-helper purge #UNITFILES# >/dev/null || true
		deb-systemd-helper unmask #UNITFILES# >/dev/null || true

I think it could be safely moved to prerm.

The issue came up (see my message and Simon answer on debian-devel)
because it is safe to rely on dependencies still being available at
prerm time but not at postrm time, and dh_installsystemduser will need
to have a versioned dependency on init-system-helpers.


More information about the Pkg-systemd-maintainers mailing list