On Sat, Aug 23, 2008 at 10:43:17PM +0200, Sven Joachim wrote: > > Well, it's an aptitude bug, so doing so. The dependencies of the old > > version of the package *must* still be installed when the preinst of the new > > package is being run, because the new-preinst is called by dpkg in the phase > > when dpkg may still try to roll back to the old version on failure.
> Can you back up this statement with a reference in the policy manual? > It seems that this may not always be possible, for instance when the old > version of the upgraded package was not configured. No, the current version of policy doesn't speak to this directly. Here is the proof that this is a bug in aptitude: - The old version of the package depends on the old library. - Policy requires that Depends: are satisfied for a package to be in the 'configured' state. - The prerm script is called before the package is deconfigured. - Therefore, the package's dependencies must still be installed at the point when the prerm script is called; removing the dependency first violates the dependency relationship, and is a bug in whatever tool is doing this. (N.B., dpkg itself does not enforce this when asked to remove dependencies of already-configured packages; it's the responsibility of the front end to get the order right.) - On package upgrade, the preinst script of the new package is called *before* the prerm of the old package. - Therefore, the preinst is being called while the old version of the package is still in "installed" state. - Therefore, it is a bug in the package manager that the dependencies of the old version of the package are not installed at the time the new preinst is run. > OTOH, I found the following statement in section 7.2: > `Pre-Depends' are also required if the `preinst' script depends > on the named package. It is best to avoid this situation if > possible. > It seems that this is just the situation here. No, it is not. slapd does *not* have a dependency on obsolete and no-longer-extant versions of the libldap library package; it only requires that on upgrade, at the time the preinst runs, the old version of *slapd itself* be in a consistent state. This is standard practice in maintainer scripts. > Compare also the discussion around #469552/#314571, especially your own > statement in http://lists.debian.org/debian-devel/2008/07/msg01028.html. If you don't understand the difference between these two cases, I fervently hope that you aren't going anywhere near the package manager code. -- Steve Langasek Give me a lever long enough and a Free OS Debian Developer to set it on, and I can move the world. Ubuntu Developer http://www.debian.org/ [EMAIL PROTECTED] [EMAIL PROTECTED] -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]