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

Reply via email to