To work around the issue you can use the following command or wait for Muon 2.1.3, which will be available in about 7 days:
sudo apt-get dist-upgrade
Analysis
=======
upgrades from nvidia-331.20 on xorgedgers will pull in bumblebee, bumblebee depends on primus depends on libprimus-libs-ia32:i386. However muon-updater cannot resolve libpriums-libs-ia32 because of the architecture difference.
In particular QApt::Package::isMultiArchDuplicate() apparently yields the wrong value. This is supposedly because it uses
> d->packageIter.Group().FindPkg()
rather than
> d->packageIter.Group().FindPreferredPkg()
which would yield the correct result. The function comments that it attempts to check whether /this/ is the best possible version of a multiarch package, which appears to not be what FindPkg is doing, rather it is checking whether it is the host architectures' duplicate package (i.e. in order to have the function return false the package needs to be :amd64 when running amd64...). However primus-libs-ia32 has no actual native version, there only is the i386 version, so isMultiArchDuplicate leads to it being discarded even tough it is the preferred package, or rather it is the only possible package.
Recommendation solution
a) use FindPreferredPkg inside isMultiArchDuplicate
b) kDebug() when a package is being discarded be it because of duplicatedness or other factors, to improve debugability of similar issues
c) evaluate whether discarding packages based on duplicatedness is even an acceptable thing to do in the update/upgrade use case
Also there's other weirdness with the updater exposed by this particular package lineup, needs separate investigation and doesn't seem related to the bug at hand though.
Thanks guys, I found the issue.
To work around the issue you can use the following command or wait for Muon 2.1.3, which will be available in about 7 days:
sudo apt-get dist-upgrade
Analysis libs-ia32: i386. However muon-updater cannot resolve libpriums-libs-ia32 because of the architecture difference.
=======
upgrades from nvidia-331.20 on xorgedgers will pull in bumblebee, bumblebee depends on primus depends on libprimus-
In particular QApt::Package: :isMultiArchDup licate( ) apparently yields the wrong value. This is supposedly because it uses Group() .FindPkg( ) Group() .FindPreferredP kg() icate leads to it being discarded even tough it is the preferred package, or rather it is the only possible package.
> d->packageIter.
rather than
> d->packageIter.
which would yield the correct result. The function comments that it attempts to check whether /this/ is the best possible version of a multiarch package, which appears to not be what FindPkg is doing, rather it is checking whether it is the host architectures' duplicate package (i.e. in order to have the function return false the package needs to be :amd64 when running amd64...). However primus-libs-ia32 has no actual native version, there only is the i386 version, so isMultiArchDupl
Recommendation solution icate
a) use FindPreferredPkg inside isMultiArchDupl
b) kDebug() when a package is being discarded be it because of duplicatedness or other factors, to improve debugability of similar issues
c) evaluate whether discarding packages based on duplicatedness is even an acceptable thing to do in the update/upgrade use case
Also there's other weirdness with the updater exposed by this particular package lineup, needs separate investigation and doesn't seem related to the bug at hand though.