Hi Harald,
On Wed, 1 Nov 2017, Harald Welte wrote:
Replaces: is
only for two packages with the same functionality, so a
Conflicts: would be right. It should be for each version available earlier
(there might be an old version left during an upgrade).
Why would it conflict? The point of having the LIBVERSION "current" as part of
the
.so name is that you can have both installed at the same time, and that applications
are linked against a specific version. So let's say I have an incompatible older
version of the library installed, some older programs can still use it, while the newer
library is used by newer / newly linked applications.
you are right, this is not a technical Conflicts: but rather a policy one.
In Debian only one version of a source package is allowed in the archive
(one for each release).
So when you upload libosmo-netif which builds libosmonetif3 and afterwards
the newer libosmo-netif that builds libosmonetif4, the former source
package will be removed. This results in a missing source package for
libosmonetif3. This situation is detectd by the archive software that
takes care of transitions and unless all packages that depend on
libosmonetif3 will be rebuilt with libosmonetif4, the package may not
migrate from unstable to testing and hence never appears in any release.
So in the end you have a libosmonetif3 on your computer that never will be
used and such should be removed, therefore the Conflicts:.
I see situations like this quite normally on any
debian system:
ii libreadline5:amd64 5.2+dfsg-3+b1
amd64 GNU readline and history libraries, run-time libraries
ii libreadline7:amd64 7.0-3
amd64 GNU readline and history libraries, run-time libraries
Sure, from time to time you really need two versions of a library. So if
you look at your example:
dpkg-query --showformat='${binary:Package}\t${source:Package}\t${Version}\n'
--show "libreadline*:amd64"
libreadline-dev:amd64 readline 7.0-3
libreadline5:amd64 readline5 5.2+dfsg-3+b1
libreadline6:amd64 readline6 6.3-9
libreadline7:amd64 readline 7.0-3
you can see that each version of libreadline* also has a different source
package readline*
Thorsten