[Bug 1130419] Re: apt resolver doesn't do sensible things when satisfying a cross-dependency on a virtual package (steam, wine)
Adolfo Jayme
fitoschido at gmail.com
Sat Feb 8 22:46:35 UTC 2014
** No longer affects: apt (Ubuntu Quantal)
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to apt in Ubuntu.
https://bugs.launchpad.net/bugs/1130419
Title:
apt resolver doesn't do sensible things when satisfying a cross-
dependency on a virtual package (steam, wine)
Status in “apt” package in Ubuntu:
Fix Released
Status in “apt” source package in Precise:
Fix Released
Status in “apt” source package in Raring:
Fix Released
Bug description:
[Test Case]
* Install precise 12.04.2 from the amd64 LTS cd
* Attempt to install steam, or wine1.4
* Good behavior: libgl1-mesa-glx-lts-quantal and libgl1-mesa-dri-lts-quantal should be installed
* Broken behavior: Fails to find a correct resolution because it tries to pull in libgl1-mesa-glx:i386, or even worse it resolves it by uninstalling all the xserver-xorg-lts-quantal packages.
[Regression Potential]
* I don't expect new bugs to pop up, since this is really a multiarch issue that only pops up because of the enablement stack. The conflict resolution is adjusted to prefer installing packages that we already have for other architectures when Multiarch: same is specified.
[Original bug report]
As a result of the LTS enablement work in 12.04.2, we now have a situation where for the first time, a library dependency of a substantial number of packages in main is satisfied by two different real packages (libgl1-mesa-glx-lts-quantal Provides: libgl1-mesa-glx), and there isn't one right "default" answer to the question of which package should be installed (users who installed 12.04 have one option; users who installed 12.04.2 have a different one).
This interacts quite badly with apt's resolver when cross-installing a
multiarch-capable package that also has a dependency on one of these
libraries. For example, the steam:i386 package has the following
dependencies:
Depends: libc6, libgl1-mesa-dri, libgl1-mesa-glx, xterm | gnome-
terminal, zenity
Since libgl1-mesa-dri and libgl1-mesa-glx are both real packages, apt
tries to pull these in by name. However, the libgl1-mesa-glx-lts-
quantal:amd64 and libgl1-mesa-dri-lts-quantal:amd64 packages already
installed have a Conflicts/Provides on libgl1-mesa-glx and libgl1
-mesa-dri respectively, and the conflicts relationship crosses
architectures.
It's reported that when installing via software-center, this conflict
may even result in removal of the X server. I can't reproduce this
myself (since steam64 has now been withdrawn from the software center
until the problem can be addressed), but apt is certainly not able to
find a solution to this problem on its own:
sudo apt-get -o Debug::pkgProblemResolver=1 install steam
Reading package lists... Done
Building dependency tree
Reading state information... Done
Starting
Starting 2
Investigating (0) libgl1-mesa-dri-lts-quantal [ amd64 ] < 9.0-0ubuntu1~precise4 > ( libs )
Broken libgl1-mesa-dri-lts-quantal:amd64 Conflicts on libgl1-mesa-dri [ i386 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libgl1-mesa-dri:i386 2 as a solution to libgl1-mesa-dri-lts-quantal:amd64 33
Added libgl1-mesa-dri:i386 to the remove list
Conflicts//Breaks against version 8.0.4-0ubuntu0.2 for libgl1-mesa-dri but that is not InstVer, ignoring
Conflicts//Breaks against version 8.0.2-0ubuntu3 for libgl1-mesa-dri but that is not InstVer, ignoring
Fixing libgl1-mesa-dri-lts-quantal:amd64 via keep of libgl1-mesa-dri:i386
Investigating (0) libgnome-desktop-3-2 [ amd64 ] < 3.4.2-0ubuntu0.1 > ( libs )
Broken libgnome-desktop-3-2:amd64 Depends on libgl1-mesa-glx [ amd64 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libgl1-mesa-glx:amd64 14 as a solution to libgnome-desktop-3-2:amd64 30
Added libgl1-mesa-glx:amd64 to the remove list
Broken libgnome-desktop-3-2:amd64 Depends on libgl1 [ amd64 ] < none > ( none )
Considering libgl1-mesa-swx11:amd64 0 as a solution to libgnome-desktop-3-2:amd64 30
Added libgl1-mesa-swx11:amd64 to the remove list
Fixing libgnome-desktop-3-2:amd64 via keep of libgl1-mesa-glx:amd64
Fixing libgnome-desktop-3-2:amd64 via keep of libgl1-mesa-swx11:amd64
Investigating (0) gnome-session-bin [ amd64 ] < 3.2.1-0ubuntu8 > ( gnome )
Broken gnome-session-bin:amd64 Depends on libgl1-mesa-glx [ amd64 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libgl1-mesa-glx:amd64 14 as a solution to gnome-session-bin:amd64 17
Added libgl1-mesa-glx:amd64 to the remove list
Broken gnome-session-bin:amd64 Depends on libgl1 [ amd64 ] < none > ( none )
Considering libgl1-mesa-swx11:amd64 0 as a solution to gnome-session-bin:amd64 17
Added libgl1-mesa-swx11:amd64 to the remove list
Fixing gnome-session-bin:amd64 via keep of libgl1-mesa-glx:amd64
Fixing gnome-session-bin:amd64 via keep of libgl1-mesa-swx11:amd64
Investigating (0) x11-utils [ amd64 ] < 7.6+4ubuntu0.1 > ( x11 )
Broken x11-utils:amd64 Depends on libgl1-mesa-glx [ amd64 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libgl1-mesa-glx:amd64 14 as a solution to x11-utils:amd64 16
Added libgl1-mesa-glx:amd64 to the remove list
Broken x11-utils:amd64 Depends on libgl1 [ amd64 ] < none > ( none )
Considering libgl1-mesa-swx11:amd64 0 as a solution to x11-utils:amd64 16
Added libgl1-mesa-swx11:amd64 to the remove list
Fixing x11-utils:amd64 via keep of libgl1-mesa-glx:amd64
Fixing x11-utils:amd64 via keep of libgl1-mesa-swx11:amd64
Investigating (0) libnux-2.0-0 [ amd64 ] < 2.14.1-0ubuntu1 > ( libs )
Broken libnux-2.0-0:amd64 Depends on libgl1-mesa-glx [ amd64 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libgl1-mesa-glx:amd64 14 as a solution to libnux-2.0-0:amd64 12
Try Installing libgl1-mesa-glx [ amd64 ] < none -> 8.0.4-0ubuntu0.3 > ( libs ) before changing libnux-2.0-0:amd64
Investigating (0) libglapi-mesa-lts-quantal [ amd64 ] < 9.0-0ubuntu1~precise4 > ( libs )
Broken libglapi-mesa-lts-quantal:amd64 Conflicts on libglapi-mesa [ amd64 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libglapi-mesa:amd64 0 as a solution to libglapi-mesa-lts-quantal:amd64 5
Added libglapi-mesa:amd64 to the remove list
Conflicts//Breaks against version 8.0.4-0ubuntu0.2 for libglapi-mesa but that is not InstVer, ignoring
Conflicts//Breaks against version 8.0.2-0ubuntu3 for libglapi-mesa but that is not InstVer, ignoring
Broken libglapi-mesa-lts-quantal:amd64 Conflicts on libglapi-mesa [ i386 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libglapi-mesa:i386 0 as a solution to libglapi-mesa-lts-quantal:amd64 5
Added libglapi-mesa:i386 to the remove list
Conflicts//Breaks against version 8.0.4-0ubuntu0.2 for libglapi-mesa but that is not InstVer, ignoring
Conflicts//Breaks against version 8.0.2-0ubuntu3 for libglapi-mesa but that is not InstVer, ignoring
Fixing libglapi-mesa-lts-quantal:amd64 via keep of libglapi-mesa:amd64
Fixing libglapi-mesa-lts-quantal:amd64 via keep of libglapi-mesa:i386
Investigating (0) libqt4-opengl [ amd64 ] < 4:4.8.1-0ubuntu4.3 -> 4:4.8.1-0ubuntu4.4 > ( libs )
Broken libqt4-opengl:amd64 Depends on libqtcore4 [ amd64 ] < 4:4.8.1-0ubuntu4.3 -> 4:4.8.1-0ubuntu4.4 > ( libs ) (= 4:4.8.1-0ubuntu4.4)
Considering libqtcore4:amd64 93 as a solution to libqt4-opengl:amd64 4
Holding Back libqt4-opengl:amd64 rather than change libqtcore4:amd64
Investigating (0) libgl1-mesa-glx [ i386 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Broken libgl1-mesa-glx:i386 Depends on libglapi-mesa [ i386 ] < none -> 8.0.4-0ubuntu0.3 > ( libs ) (= 8.0.4-0ubuntu0.3)
Considering libglapi-mesa:i386 0 as a solution to libgl1-mesa-glx:i386 1
Holding Back libgl1-mesa-glx:i386 rather than change libglapi-mesa:i386
Investigating (0) xserver-xorg-lts-quantal [ amd64 ] < 1:7.7+1ubuntu4~precise1 > ( x11 )
Broken xserver-xorg-lts-quantal:amd64 Conflicts on libgl1-mesa-dri [ amd64 ] < none -> 8.0.4-0ubuntu0.3 > ( libs ) (>= 0~)
Considering libgl1-mesa-dri:amd64 1 as a solution to xserver-xorg-lts-quantal:amd64 0
Removing xserver-xorg-lts-quantal:amd64 rather than change libgl1-mesa-dri:amd64
Investigating (1) steam [ i386 ] < none -> 1.0.0.27ubuntu1 > ( games )
Broken steam:i386 Depends on libgl1-mesa-dri [ i386 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libgl1-mesa-dri:i386 2 as a solution to steam:i386 9999
Re-Instated libgl1-mesa-dri:i386
Broken steam:i386 Depends on libgl1-mesa-glx [ i386 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libgl1-mesa-glx:i386 1 as a solution to steam:i386 9999
Re-Instated libglapi-mesa:i386
Re-Instated libgl1-mesa-glx:i386
Investigating (1) libgl1-mesa-dri-lts-quantal [ amd64 ] < 9.0-0ubuntu1~precise4 > ( libs )
Broken libgl1-mesa-dri-lts-quantal:amd64 Conflicts on libgl1-mesa-dri [ amd64 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libgl1-mesa-dri:amd64 1 as a solution to libgl1-mesa-dri-lts-quantal:amd64 33
Added libgl1-mesa-dri:amd64 to the remove list
Conflicts//Breaks against version 8.0.4-0ubuntu0.2 for libgl1-mesa-dri but that is not InstVer, ignoring
Conflicts//Breaks against version 8.0.2-0ubuntu3 for libgl1-mesa-dri but that is not InstVer, ignoring
Broken libgl1-mesa-dri-lts-quantal:amd64 Conflicts on libgl1-mesa-dri [ i386 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libgl1-mesa-dri:i386 2 as a solution to libgl1-mesa-dri-lts-quantal:amd64 33
Added libgl1-mesa-dri:i386 to the remove list
Conflicts//Breaks against version 8.0.4-0ubuntu0.2 for libgl1-mesa-dri but that is not InstVer, ignoring
Conflicts//Breaks against version 8.0.2-0ubuntu3 for libgl1-mesa-dri but that is not InstVer, ignoring
Fixing libgl1-mesa-dri-lts-quantal:amd64 via keep of libgl1-mesa-dri:amd64
Fixing libgl1-mesa-dri-lts-quantal:amd64 via keep of libgl1-mesa-dri:i386
Investigating (1) libgl1-mesa-glx [ amd64 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Broken libgl1-mesa-glx:amd64 Depends on libglapi-mesa [ amd64 ] < none -> 8.0.4-0ubuntu0.3 > ( libs ) (= 8.0.4-0ubuntu0.3)
Considering libglapi-mesa:amd64 0 as a solution to libgl1-mesa-glx:amd64 14
Holding Back libgl1-mesa-glx:amd64 rather than change libglapi-mesa:amd64
Investigating (1) libnux-2.0-0 [ amd64 ] < 2.14.1-0ubuntu1 > ( libs )
Broken libnux-2.0-0:amd64 Depends on libgl1-mesa-glx [ amd64 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libgl1-mesa-glx:amd64 14 as a solution to libnux-2.0-0:amd64 12
Try Installing libgl1-mesa-glx [ amd64 ] < none -> 8.0.4-0ubuntu0.3 > ( libs ) before changing libnux-2.0-0:amd64
Investigating (1) libglapi-mesa-lts-quantal [ amd64 ] < 9.0-0ubuntu1~precise4 > ( libs )
Broken libglapi-mesa-lts-quantal:amd64 Conflicts on libglapi-mesa [ amd64 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libglapi-mesa:amd64 0 as a solution to libglapi-mesa-lts-quantal:amd64 5
Added libglapi-mesa:amd64 to the remove list
Conflicts//Breaks against version 8.0.4-0ubuntu0.2 for libglapi-mesa but that is not InstVer, ignoring
Conflicts//Breaks against version 8.0.2-0ubuntu3 for libglapi-mesa but that is not InstVer, ignoring
Broken libglapi-mesa-lts-quantal:amd64 Conflicts on libglapi-mesa [ i386 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libglapi-mesa:i386 0 as a solution to libglapi-mesa-lts-quantal:amd64 5
Added libglapi-mesa:i386 to the remove list
Conflicts//Breaks against version 8.0.4-0ubuntu0.2 for libglapi-mesa but that is not InstVer, ignoring
Conflicts//Breaks against version 8.0.2-0ubuntu3 for libglapi-mesa but that is not InstVer, ignoring
Fixing libglapi-mesa-lts-quantal:amd64 via keep of libglapi-mesa:amd64
Fixing libglapi-mesa-lts-quantal:amd64 via keep of libglapi-mesa:i386
Try to Re-Instate (1) libqt4-opengl:amd64
Investigating (1) libgl1-mesa-glx [ i386 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Broken libgl1-mesa-glx:i386 Depends on libglapi-mesa [ i386 ] < none -> 8.0.4-0ubuntu0.3 > ( libs ) (= 8.0.4-0ubuntu0.3)
Considering libglapi-mesa:i386 0 as a solution to libgl1-mesa-glx:i386 1
Holding Back libgl1-mesa-glx:i386 rather than change libglapi-mesa:i386
Investigating (1) xorg [ amd64 ] < 1:7.6+12ubuntu2 > ( x11 )
Broken xorg:amd64 Depends on xserver-xorg [ amd64 ] < none -> 1:7.6+12ubuntu2 > ( x11 ) (>= 1:7.6+12ubuntu2)
Considering xserver-xorg:amd64 3 as a solution to xorg:amd64 1
Try Installing xserver-xorg [ amd64 ] < none -> 1:7.6+12ubuntu2 > ( x11 ) before changing xorg:amd64
Broken xorg:amd64 Depends on xserver-xorg-renamed [ amd64 ] < none > ( none )
Considering xserver-xorg-lts-quantal:amd64 0 as a solution to xorg:amd64 1
Added xserver-xorg-lts-quantal:amd64 to the remove list
Fixing xorg:amd64 via keep of xserver-xorg-lts-quantal:amd64
Investigating (1) xserver-xorg-lts-quantal [ amd64 ] < 1:7.7+1ubuntu4~precise1 > ( x11 )
Broken xserver-xorg-lts-quantal:amd64 Depends on xserver-xorg-core-lts-quantal [ amd64 ] < 2:1.13.0-0ubuntu6.1~precise2 > ( x11 ) (>= 2:1.11)
Considering xserver-xorg-core-lts-quantal:amd64 54 as a solution to xserver-xorg-lts-quantal:amd64 0
Removing xserver-xorg-lts-quantal:amd64 rather than change xserver-xorg-core-lts-quantal:amd64
Investigating (2) steam [ i386 ] < none -> 1.0.0.27ubuntu1 > ( games )
Broken steam:i386 Depends on libgl1-mesa-dri [ i386 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libgl1-mesa-dri:i386 2 as a solution to steam:i386 9999
Considering libgl1-mesa-dri:i386 2 as a solution to steam:i386 9999
Considering libgl1-mesa-dri:i386 2 as a solution to steam:i386 9999
Considering libgl1-mesa-dri-lts-quantal:i386 0 as a solution to steam:i386 9999
Re-Instated libdrm-nouveau2:i386
Re-Instated libglapi-mesa-lts-quantal:i386
Re-Instated libllvm3.1:i386
Re-Instated libgl1-mesa-dri-lts-quantal:i386
Broken steam:i386 Depends on libgl1-mesa-glx [ i386 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libgl1-mesa-glx:i386 1 as a solution to steam:i386 9999
Considering libgl1-mesa-glx:i386 1 as a solution to steam:i386 9999
Considering libgl1-mesa-glx:i386 1 as a solution to steam:i386 9999
Considering libgl1-mesa-glx-lts-quantal:i386 0 as a solution to steam:i386 9999
Re-Instated libgl1-mesa-glx-lts-quantal:i386
Investigating (2) libgl1-mesa-glx [ amd64 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Broken libgl1-mesa-glx:amd64 Depends on libglapi-mesa [ amd64 ] < none -> 8.0.4-0ubuntu0.3 > ( libs ) (= 8.0.4-0ubuntu0.3)
Considering libglapi-mesa:amd64 0 as a solution to libgl1-mesa-glx:amd64 14
Holding Back libgl1-mesa-glx:amd64 rather than change libglapi-mesa:amd64
Investigating (2) libnux-2.0-0 [ amd64 ] < 2.14.1-0ubuntu1 > ( libs )
Broken libnux-2.0-0:amd64 Depends on libgl1-mesa-glx [ amd64 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libgl1-mesa-glx:amd64 14 as a solution to libnux-2.0-0:amd64 12
Try Installing libgl1-mesa-glx [ amd64 ] < none -> 8.0.4-0ubuntu0.3 > ( libs ) before changing libnux-2.0-0:amd64
Investigating (2) xorg [ amd64 ] < 1:7.6+12ubuntu2 > ( x11 )
Broken xorg:amd64 Depends on xserver-xorg [ amd64 ] < none -> 1:7.6+12ubuntu2 > ( x11 ) (>= 1:7.6+12ubuntu2)
Considering xserver-xorg:amd64 3 as a solution to xorg:amd64 1
Try Installing xserver-xorg [ amd64 ] < none -> 1:7.6+12ubuntu2 > ( x11 ) before changing xorg:amd64
Investigating (3) steam [ i386 ] < none -> 1.0.0.27ubuntu1 > ( games )
Broken steam:i386 Depends on libgl1-mesa-dri [ i386 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libgl1-mesa-dri:i386 2 as a solution to steam:i386 9999
Considering libgl1-mesa-dri:i386 2 as a solution to steam:i386 9999
Considering libgl1-mesa-dri:i386 2 as a solution to steam:i386 9999
Considering libgl1-mesa-dri-lts-quantal:i386 0 as a solution to steam:i386 9999
Broken steam:i386 Depends on libgl1-mesa-glx [ i386 ] < none -> 8.0.4-0ubuntu0.3 > ( libs )
Considering libgl1-mesa-glx:i386 1 as a solution to steam:i386 9999
Considering libgl1-mesa-glx:i386 1 as a solution to steam:i386 9999
Considering libgl1-mesa-glx:i386 1 as a solution to steam:i386 9999
Considering libgl1-mesa-glx-lts-quantal:i386 0 as a solution to steam:i386 9999
Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
steam:i386 : Depends: libgl1-mesa-dri:i386
Depends: libgl1-mesa-glx:i386
E: Unable to correct problems, you have held broken packages.
Getting a correct result requires the following:
$ sudo apt-get install libgl1-mesa-dri-lts-quantal:i386 libglapi-mesa-
lts-quantal:i386 libgl1-mesa-glx-lts-quantal:i386 steam
Since we don't have enough information to say with certainty that all
Conflicts from packages of a different architecture can be ignored, it
seems we need apt's resolver to be smarter, and possibly give priority
to implementors of virtual packages that are already installed for a
different architecture when trying to satisfy dependencies.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1130419/+subscriptions
More information about the foundations-bugs
mailing list