Bug#1050322: Partial versus complete replacement of a package by another
Package: debian-policy
Version: 4.6.2.0
Severity: normal
Hi,
over at bug #1050027 there is a discussion of applicable policy when
splitting a package. I'll first explain what the bug is about and then
why that's a problem with the Policy.
The src:mathcomp-analysis package provided a single binary package
libcoq-mathcomp-analysis until 0.6.3-2 ; with 0.6.4-1, it's now
providing two binary packages libcoq-mathcomp-analysis and libcoq-
mathcomp-classical. The binary package libcoq-mathcomp-analysis Depends
on libcoq-mathcomp-classical (= ${binary:Version}). And with 0.6.4-1,
that Depends was the only information, so of course file conflicts
weren't handled correctly, and that is what #1050027 is about.
In src:mathcomp-analysis 0.6.4-2, I declared that libcoq-mathcomp-
classical Breaks libcoq-mathcomp-analysis (<< 0.6.4) and closed the
bug. It was swiftly re-opened because I hadn't used Breaks+Replaces
according to Policy 7.6.1. But I don't want to use Replaces as libcoq-
mathcomp-classical isn't a *complete* replacement for libcoq-mathcomp-
analysis (<< 0.6.4) -- it only provides a small part of it!
So what does the Policy actually say?
In section 7.3 it discusses the use of Breaks to avoid file conflicts -
- and on that point it's pretty clear.
The problem is with section 7.6 on how to use Replaces: indeed, the
very first paragraph of 7.6 mentions "two distinct purposes", partial
and complete replacement... but the rest of the section is all about
complete replacement -- and it's using Breaks+Replaces for that. What
relationship fields combination corresponds to *partial* replacement?
As far as I can tell it doesn't say!
Subsection 7.6.1 explains that Replaces without Breaks shouldn't happen
(not clearly enough: #1050221).
In fact subsection 7.6.1 has an example which looks exactly like
#1050027, but it looks wrong: if foo 1.2-2 is installed on a system and
foo-data 1.2-3's installation is requested, then because of Breaks dpkg
will know about the file conflicts and beware, but because of Replaces,
it will think it's a complete replacement -- foo will disappear if I
understand well. The system will stay coherent but the user will have
lost features...
My understanding of relationship fields mechanics is:
| | Breaks | no Breaks |
|-------------+----------------------+------------|
| Replaces | complete replacement | 7.6.1: no! |
| no Replaces | partial replacement | very usual |
But that indeed isn't in the Policy per se, so I'm asking for
clarification.
Cheers,
J.Puydt
Reply to: