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

Bug#212620: dpkg: [DEP-ENGINE] semantics of Conflicts+Replaces are unknown/undocumented/wrong



Package: dpkg
Version: 1.10.15
Severity: normal

IRC transcript:

02:34PM|<Overfiend> My thinking is this: if package to-be-installed A Conflicts: with package B, why should A need to Replace: B?
02:34PM|<Overfiend> dpkg should ensure that B is removed before unpacking A
02:35PM|<asuffield> one example is that it allows A to pinch config files from B
02:35PM|<asuffield> which can be handy when renaming a package
02:35PM|<Overfiend> but when I pursue that change of reasoning I wonder why we have Replaces: at all
02:35PM|<Overfiend> asuffield: except we DON'T handle "pinching" of conffiles
02:35PM|<Overfiend> dpkg gets badly confused
02:35PM|<Overfiend> witness upgrades from xlibs 4.2.1 to xlibs-data 4.3.0
02:35PM|<Overfiend> you get prompted for every motherfucking conffile
02:36PM|<asuffield> heh
02:36PM|<Overfiend> which is a lot thanks to XKB
02:36PM|<asuffield> well, it was *supposed* to work. I thought.
02:36PM|<Overfiend> well, it don't. :-P
02:37PM|<doogie> Overfiend: when A conflicts with B, dpkg only ensures that B is unconfigured before unpacking A
02:37PM|<Overfiend> doogie: I see.
02:37PM|<doogie> and by unconfigured, I mean it only has config-files on the system
02:37PM|<doogie> which means all it's normal files have been removed.
02:37PM|<Overfiend> doogie: so you would only Conflict: without Replacing: in the odd case....wait...
02:38PM|<Overfiend> so you only really need Replaces: with Conflicts: when you're replacing conffiles?
02:38PM|<doogie> there's a slight difference in what I said and what you said
02:38PM|<doogie> you can't replace conffiles(this is considered a dpkg bug)
02:42PM|<Overfiend> doogie: I am wondering why (and when) it is meaningful to have Replaces: with Conflicts: at all.
02:44PM|<doogie> Overfiend: I don't know
02:44PM|<Overfiend> shit.
02:44PM|<Overfiend> you're the person most familiar with dpkg's internals these days.
02:44PM|<Qerub> Manoj: Don't mind me - I was probably wrong. I'll beep if I find out something concrete.
02:44PM|<Overfiend> this is a really fucking dusty corner, then.
02:44PM|<Manoj> Qerub: oh, there is no harm in asking
02:44PM|<Overfiend> I wonder if we can get away with changing Replaces:'s semantics.  Given that they're currently meaningless in this case.
02:44PM|<doogie> no I'm not.
02:45PM|<doogie> the dependency engine isn't something I know.
02:45PM|<Overfiend> I.e., Conflicts+Replaces means "migrating conffile"
02:45PM|<asuffield> Overfiend: Replaces is one of those features which _nobody_ really understands. including iwj.
02:45PM|<Overfiend> doogie: I said what I did because the people (person?) who know more are not really part of the project anymore.
02:45PM|<asuffield> fuck knows what would happen if we tried screwing with it
02:45PM|<Overfiend> Diziet only pokes his head up to complain that too much is being asked of him.
02:46PM|<doogie> culus might.  but we all know how active culus is
02:46PM|<Overfiend> well, then, I'm going to file a bug.
02:46PM|<Overfiend> so this doesn't get forgotten about
02:47PM|<doogie> Overfiend: pseudo-tag it well
02:52PM|<Overfiend> doogie: what do you want me to call it?  DEP?  DEPENDS?  DEPENDENCIES?
02:52PM|<doogie> DEP-ENGINE

I'd like to propose that Replaces: be used for conffile migration only.

Any non-conflicting package that would otherwise use Replaces: should
probably be using dpkg-divert instead.

-- System Information:
Debian Release: testing/unstable
Architecture: powerpc
Kernel: Linux redwald 2.4.21-powerpc #1 mar jui 8 19:36:37 CEST 2003 ppc
Locale: LANG=C, LC_CTYPE=en_US.UTF-8

Versions of packages dpkg depends on:
ii  dselect                       1.10.15    a user tool to manage Debian packa
ii  libc6                         2.3.2-8    GNU C Library: Shared libraries an

-- no debconf information




Reply to: