[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

prerm for disappearing packages?



Hi again,

Guillem Jover wrote:

> Regardless of it being possible to call prerm by making the code in
> dpkg more complex/intelligent, the thing is if it would be the correct
> thing to do.

Yes, this is a useful question.  Thank you for bringing it up.

First note that I don’t think this problem would come up often in practice.
Usually the package being replaced is an empty or almost-empty package, and
it is rare for such a package to need a prerm.

Most prerm scripts look something like this [1], but simpler.

	#!/bin/sh
	set -e
	pkg=me

	if type update-python-modules >/dev/null 2>&1
	then
		update-python-modules -c "$pkg.private"
	fi
	if test -x /usr/lib/emacsen-common/emacs-package-remove
	then
		/usr/lib/emacsen-common/emacs-package-remove "$pkg"
	fi
	if test -x "/etc/init.d/$pkg"
	then
		if test -x "$(which invoke-rc.d 2>/dev/null)"
		then
			invoke-rc.d "$pkg" stop || :
		else
			"/etc/init.d/$pkg" stop || :
		fi
	fi
	if test -L "/usr/doc/$pkg"
	then
		rm -f "/usr/doc/$pkg"
	fi
	case "$1" in
	remove|deconfigure)
		update-alternatives --remove "$pkg" /usr/bin/whatever
	esac

> Something to consider is that a disappearing package is
> just one for which its files have been completely taken over by another
> package, so arguably its contents do not get removed, they just change
> ownership, and no maintainer scripts do get called either on
> non-disappeared replaced files.

prerm is used for upgrades, too.

> But if there was a
> demonstrable need to run prerm script in this situation, I'd not see any
> problem in an evaluation on adding such call.

Waiting until it comes up does make some sense.

> Also dpkg will not disappear a package currently being
> depended on.

Ah, I didn’t realize this!  That is very comforting to know and should
be helpful for transitions.  It requires some front-end support to
work well, though: an obsolete package and any package that depends on
it have to be installed in a single dpkg run.

I will try it out.

Thanks,
Jonathan

[1] Except bash.prerm --- I don’t know what’s going on with that one.
automake and bsd-mailx do not remove alternatives when deconfiguring, but
I suspect they should.  byacc removes alternatives on failed-upgrade.
I stopped reading there.


Reply to: