[Pkg-Cyrus-imapd-Debian-devel] Problem with statoverrides after upgrading cyrus22-* to cyrus-*2.2

Henrique de Moraes Holschuh hmh at debian.org
Tue Dec 13 23:00:10 UTC 2005


On Tue, 13 Dec 2005, Sven Mueller wrote:
> >>Oh well, but _how_ do we make them disappear during upgrades?
> > 
> > You have to *completely* replace the package.  It will disappear, then.
> > 
> > This means the famous trio (provides: conflicts: replaces:) without versions
> > is needed for all packages you are going to make disapear.  That tells dpkg
> > that something fishy is going on, and it does away with the old package.
> 
> Well, on the system in question, I never had cyrus21-common installed,
> just cyrus22-common. And cyrus-common-2.2 does the triplet on
> cyrus22-common (though some others didn't until my latest commit). And
> the stat-overrides are definately done by cyrus*-common*.

Well, Debian policy says this:

     9.   Any packages all of whose files have been overwritten during the
          installation, and which aren't required for dependencies, are
          considered to have been removed.  For each such package

          1.   `dpkg' calls:
                    <disappearer's-postrm> disappear \
                      <overwriter> <overwriter-version>

          2.   The package's maintainer scripts are removed.

          3.   It is noted in the status database as being in a sane state,
               namely not installed (any conffiles it may have are ignored,
               rather than being removed by `dpkg').  Note that
               disappearing packages do not have their prerm called,
               because `dpkg' doesn't know in advance that the package is
               going to vanish.

Section 7.5.1 has more tips, as well.  It hits that we *cannot* conflict(!)
with the other package.

I am confused now, apparently we have to take over ALL files (including
those that are now useless and should be removed instead) by using Replaces
and shipping these files inside the .deb, AND not conflict with the old
package.

Still, if we conflict + replace all files, that should also work (since no
files of the old package will remain).  I suppose we can rm the undesireable
files in postinst.

Section 7.5.2 explains the triplets, but doesn't help much.

What's getting me bummed is that there shouldn't be any files left but the
conffiles when migrating from old 2.2 to new 2.2, AND that the conffiles are
the same, so the old package should indeed have disappered.

Sven, did you perchange *purge* by hand the old 2.2 packages? If you did
not, we're off track.  postrm purge will not be called UNLESS you manually
tell apt/dpkg to do so, disappearing packages or not.

-- 
  "One disk to rule them all, One disk to find them. One disk to bring
  them all and in the darkness grind them. In the Land of Redmond
  where the shadows lie." -- The Silicon Valley Tarot
  Henrique Holschuh



More information about the Pkg-Cyrus-imapd-Debian-devel mailing list