Trying to install the amd64 and i386 versions of this package results in the
# apt-get install libquazip5-1:i386 libquazip5-1:amd64
Unpacking libquazip5-1:amd64 (0.7.3-7) ...
dpkg: dependency problems prevent configuration of libquazip5-1:amd64:
libquazip5-1:i386 (0.7.3-7) breaks libquazip-qt5-1 and is installed.
libquazip5-1:amd64 (0.7.3-7) provides libquazip-qt5-1.
libquazip5-1:i386 (0.7.3-7) breaks libquazip1-qt5 and is installed.
libquazip5-1:amd64 (0.7.3-7) provides libquazip1-qt5.
dpkg: error processing package libquazip5-1:amd64 (--configure):
dependency problems - leaving unconfigured
So the source of the issue seems to be that libquazip5-1:
* Provides the libquazip-qt5-1 and libquazip1-qt5 virtual packages
* Breaks + Replaces the libquazip-qt5-1 and libquazip1-qt5 virtual packages
Apt seems to consider that this means libquazip5-1:amd64 breaks
through the libquazip-qt5-1 and libquazip1-qt5 virtual packages which prevents
them from being coinstalled.
One strange thing is that, if I understand 7.6.1 of the Debian Policy Manual
correctly, Breaks + Replaces is not supposed to be used on virtual packages:
| For this usage of Replaces, virtual packages (see Virtual packages -
| Section 7.5) are not considered when looking at a Replaces field. The
| declared as being replaced must be mentioned by their real names.
Maybe that's why Apt is confused in this multi-arch configuration.
Note that, based on 7.6.2, the usual pattern for virtual packages would be
Provides + Conflicts + Replaces:
| In this situation, the package declared as being replaced can be a virtual
| package, so for example, all mail transport agents (MTAs) would have the
| following fields in their control files:
| Provides: mail-transport-agent
| Conflicts: mail-transport-agent
| Replaces: mail-transport-agent
| ensuring that only one MTA can be unpacked at any one time
Seems like something to try to see if it fixes the issue.
But libquazip-qt5-1 and libquazip1-qt5 may well have been real packages at some
point. However currently their only existence is through the Provides of
libquazip5-1. Still if the goal it to state that libquazip5-1 breaks these old
packages (to ensure clean upgrades), then a Breaks + version number would
be the right thing to do (see 7.5 of the policy):
| If a relationship field has a version number attached, only real packages
| be considered to see whether the relationship is satisfied (or the
| 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
| may not contain version numbers, and the version number of the concrete
| which provides a particular virtual package will not be considered when
| considering a dependency on or conflict with the virtual package name.
-- System Information:
Debian Release: buster/sid
APT prefers testing
APT policy: (500, 'testing')
Architecture: i386 (i686)
Foreign Architectures: amd64
Kernel: Linux 4.16.0-1-686-pae (SMP w/4 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8),
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages libquazip5-1 depends on:
ii libc6 2.27-3
ii libgcc1 1:8.1.0-1
ii libqt5core5a 5.10.1+dfsg-6
ii libstdc++6 8.1.0-1
ii zlib1g 1:1.2.11.dfsg-1
libquazip5-1 recommends no packages.
Versions of packages libquazip5-1 suggests:
pn libquazip-doc <none>
-- no debconf information