On Sun, May 06, 2018 at 05:11:02AM -0400, Francois Gouget wrote: > Package: ibverbs-providers > Version: 17.1-2 > Severity: normal > > Dear Maintainer, > > Trying to install the amd64 and i386 versions of this package results in the > following error: > > # apt-get install ibverbs-providers:amd64 ibverbs-providers:i386 > [...] > Unpacking ibverbs-providers:i386 (17.1-1) ... > Processing triggers for libc-bin (2.27-3) ... > dpkg: dependency problems prevent configuration of ibverbs-providers:i386: > ibverbs-providers:amd64 (17.1-1) breaks libcxgb3-1 and is installed. > ibverbs-providers:i386 (17.1-1) provides libcxgb3-1. > ibverbs-providers:amd64 (17.1-1) breaks libipathverbs1 and is installed. > ibverbs-providers:i386 (17.1-1) provides libipathverbs1. > ibverbs-providers:amd64 (17.1-1) breaks libmlx4-1 and is installed. > ibverbs-providers:i386 (17.1-1) provides libmlx4-1. > ibverbs-providers:amd64 (17.1-1) breaks libmlx5-1 and is installed. > ibverbs-providers:i386 (17.1-1) provides libmlx5-1. > ibverbs-providers:amd64 (17.1-1) breaks libmthca1 and is installed. > ibverbs-providers:i386 (17.1-1) provides libmthca1. > ibverbs-providers:amd64 (17.1-1) breaks libnes1 and is installed. > ibverbs-providers:i386 (17.1-1) provides libnes1. > > dpkg: error processing package ibverbs-providers:i386 (--configure): > dependency problems - leaving unconfigured > Errors were encountered while processing: > ibverbs-providers:i386 > E: Sub-process /usr/bin/dpkg returned an error code (1) > > > So the source of the issue seems to be that ibverbs-providers: > * Provides a bunch of virtual packages > * Breaks + Replaces these virtual packages
They are not virtual packages, but obsolete real packages that this package has replaced. > Apt seems to consider that this means ibverbs-providers:amd64 breaks > ibverbs-providers:i386 through the virtual packages which prevents them from > being > coinstalled. Curiously, this isn't apt complaining, but dpkg. This indicates there is a apt bug, as it should never invoke dpkg in a way where it fails like this. > Note that, based on 7.6.2, the usual pattern for virtual packages would be > Provides + Conflicts + Replaces: Well, that would still cause problems as Conflicts/Provides will still fail. I think the correct solution is this text: If a relationship field has a version number attached, only real packages will be considered to see whether the relationship is satisfied (or the prohibition violated, for a conflict or breakage). In other words, if a version number is specified, this is a request to ignore all Provides for that package name and consider only real packages. The package manager will assume that a package providing that virtual package is not of the "right" version. A Provides field may not contain version numbers, and the version number of the concrete package which provides a particular virtual package will not be considered when considering a dependency on or conflict with the virtual package name.[52] Ie add a version to the breaks so that dpkg will ignore the Provides when matching it. This should allow multiple packages to provide at once.. At least it suggests that is how Conflicts will work, and I don't recall off hand :) Jason