Please remove the following email address: e.little...@gmail.com On Sat, Sep 9, 2023 at 6:51 PM Russ Allbery <r...@debian.org> wrote:
> julien.pu...@gmail.com writes: > > > Oh. I think I had two problems: > > (1) thinking "Replaces" meant "replaces" ; > > (2) thinking d/control controlled packages. > > > Let me try to see if I'm getting at something: > > > (*) Replaces doesn't really mean "can be used in place of" > > -- that would be expressed with Breaks+Provides. > > > (*) Replaces shouldn't come without Breaks, but doesn't imply it > > so we have to put in both (why?). > > Yes, this is a good question. I recently was confused about this myself > despite having worked on Debian and maintained Policy and, at times, > Lintian for years, which implies that we don't do a very good job of > documenting the ins and outs of this. > > https://lists.debian.org/debian-devel/2023/06/msg00354.html is the best > explanation of this that I've seen. The short summary is that the one > case where Breaks is not required is if the package with Replaces also > depends on a new version of the package that it is replacing. This > prevents the scenario described in the footnote. > > The other thing that's worth noting is that sometimes you want Breaks and > sometimes you want Conflicts, and both Breaks and Conflicts are useful > without Replaces for other reasons, so none of them can really imply any > of the others. > > I also saw your other bug (#1050221) about promoting that footnote to the > main text. That's a partial fix, but I think we should include some > portion of Helmut's explanation directly in Policy as well. (We sort of > say this, but we're not nearly as explicit about it as we could be, and we > don't use normative language.) > > > (*) In 7.6.1's example, what happens if the system has foo 1.2-2 and > > the user tries to install foo-data 1.2-3? Do we end up with foo 1.2-2 > > and foo-data 1.2-3 unpacked and apt/dpkg complaining it can't configure > > them or does it refuse with a clear error message? > > It refuses to begin the operation because foo-data 1.2-3 breaks foo 1.2-2 > and foo 1.2-2 is currently configured. foo 1.2-2 has to be unconfigured > first before the installation of foo-data 1.2-3 can procede. (This is > documented in Policy 7.3 where Breaks is discussed.) > > What normally happens is that users use apt rather than dpkg directly. I > believe apt will force an upgrade of foo because it sees that it is broken > by foo-data and will not allow installation of foo-data without either > upgrading or removing foo. (dpkg does not do this because dpkg in general > operates on only the packages it's told to operate on and doesn't expand > the scope of one invocation to change other packages.) > > -- > Russ Allbery (r...@debian.org) <https://www.eyrie.org/~eagle/> > >