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

~133 upcoming RC bugs?



Hi people,

When you declare Conflicts and Replaces on the same package, dpkg will
remove it completely before installing your package.

For example, libdnd1 package has:

Conflicts: offix
Replaces: offix

This is fine.

However, there was a problem in dpkg << 1.6.8 - if you added two or more
packages to both Conflicts: and Replaces:, it recognized only the first
package listed, and the install failed since it reported that the offending
package conflicts with the second package (listed in C: and R:), yet it is
installed.

This was fixed with this change in dpkg:

Tue Feb  8 21:33:58 EST 2000 Ben Collins <bcollins@debian.org>

  (note: merged from main branch at Wed Feb  9 13:32:59 CET 2000)

  * main/{processarc,archive}.c: Make the conflictor an array of structs and
    make sure that check_conflicts uses that and increments a global indexs
    for the array. The reason that multiple conflicts/replaces were getting
    borked had something to do with thre first one in the hash not being
    processed. This was the result of bad pointer games, so this makes it a
    lot cleaner.

The change propagated in dpkg package two days later, in version 1.6.8.

However, earlier versions, such as the one in slink, will still fail! That's
the reason why any packages using two or more packages in C:+R: fields must
declare either a Pre-Depends: dpkg (>= 1.6.8) or Conflicts: dpkg (<< 1.6.8).

Okay, I thought, no problem, I'll just file RC bugs against those few
packages, it's a one-liner fix, all will be well.

But no. There are more than a HUNDRED packages that need this fix!

I've already filed fifteen or so reports, before someone told me to check
the total number, and that I should mail -devel for discussion, sorry.

What should be done? I thought of adding a note to the Release Notes about
upgrading dpkg before upgrading anything else.

Although, one could theoretically upgrade most of his system without the new
dpkg, and not get hit with this bug... then again, the following packages
with Priority higher or equal to standard will get hit with this:
nfs-kernel-server locales xlib6g util-linux cpio.

I also don't quite know whether the usually super-intelligent APT library
deals with these packages individually, or does it rely on dpkg for doing
the right thing. I heard that it handles it correctly, but we ought to get a
100% confirmation. And still, not everyone will be upgrading with apt :/

Richard, what do you think?

BTW try this to check for yourself - it will have a few false matches, but
still, out of 133 packages there aren't that many that aren't problematic:

grep-available -Pe '.*' -s Package,Conflicts,Replaces | grep-dctrl -v -e \
-FConflicts '^ *$' | grep-dctrl -v -e -FReplaces '^ *$' | grep-dctrl \
-FConflicts , | grep-dctrl -FReplaces , | less

-- 
Digital Electronic Being Intended for Assassination and Nullification


Reply to: