[Bug 900092] New: PackageKit/zypp has trouble with multiple versions in a repo (libzypp can handle it)
http://bugzilla.opensuse.org/show_bug.cgi?id=900092 Bug ID: 900092 Summary: PackageKit/zypp has trouble with multiple versions in a repo (libzypp can handle it) Classification: openSUSE Product: openSUSE Factory Version: 201410* Hardware: Other OS: Other Status: NEW Severity: Normal Priority: P5 - None Component: GNOME Assignee: bnc-team-gnome@forge.provo.novell.com Reporter: dimstar@opensuse.org QA Contact: qa-bugs@suse.de Found By: --- Blocker: --- The VideoLAN repository (and likely also packman) certainly have a strange setup for that, nevertheless it's existing in the real world. there is a package * vlc-2.1.5-2.1 (whith subpackages built, I only focus on one of them:) * libvlc5-2.1.5-2-1 (version 100% in sync to vlc) and there is * vlc-beta-3.0.0-2.1 * libvlc5-3.0.0-2.1 (it is supposed to be ABI compatible, but we prefer not to gamble) vlc has a Requires: libvlc5 = %{version-%{release} and so does vlc-beta vlc and vlc beta have a Conflicts: against each other. while the user has vlc-2.1.5-1.1 installed, a zypper up happily upgrades vlc inside the 'stable branch', and keeps libvlc5 in line to what it should be if the user has vlc-beta installe, the same works using zypper Using PackageKit though (pkcon for one): if the user has vlc installed, pkcon update fails with Fatal error: vlc-noX-2.1.5-111.1.x86_64 requires libvlc5 = 2.1.5-111.1, but this requirement cannot be provided which is quite annoying: if the user happens to have this constellation (and probably others!) then pkcon update simply aborts -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=900092 Dominique Leuenberger <dimstar@opensuse.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |coolo@suse.com --- Comment #1 from Dominique Leuenberger <dimstar@opensuse.org> --- CCing Coolo @Coolo: as you are the top-commiter on this backend, I hope you have a great idea where this can be falling through. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=900092 Dominique Leuenberger <dimstar@opensuse.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|Normal |Major --- Comment #2 from Dominique Leuenberger <dimstar@opensuse.org> --- Have to bump prio on that one: if the user has such a repo enabled PK fails entirely to provide a solution and as a result does not propose any updates to the user -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=900092 Dominique Leuenberger <dimstar@opensuse.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |CONFIRMED -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=900092 Dominique Leuenberger <dimstar@opensuse.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ma@suse.com -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=900092 Michael Andres <ma@suse.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dimstar@opensuse.org Flags| |needinfo?(dimstar@opensuse. | |org) --- Comment #3 from Michael Andres <ma@suse.com> --- Looking at the release numbers assume vlc-2.1.5-1.1 is openSUSE and vlc-noX-2.1.5-111.1 is videolan. Maybe PK tries a cross vendor update by looking at packages and version numbers only. Is a backend log available? It should show, what PK actually requests from the resolver. If possible also a solver testcase (zypper in --debug-solver foo), so I can see what's actually available on the system. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=900092 --- Comment #4 from Dominique Leuenberger <dimstar@opensuse.org> --- Created attachment 610008 --> http://bugzilla.opensuse.org/attachment.cgi?id=610008&action=edit PK backend log (compressed) He who asks shall receive... -- You are receiving this mail because: You are on the CC list for the bug.
rpm -qa "*vlc*" --qf "%{name}\t%{vendor}\n" vlc VideoLAN Project (http://www.videolan.org)
http://bugzilla.opensuse.org/show_bug.cgi?id=900092 --- Comment #5 from Dominique Leuenberger <dimstar@opensuse.org> --- all existing vlc packages on my system come from VLC repo libvlccore7 VideoLAN Project (http://www.videolan.org) vlc-qt VideoLAN Project (http://www.videolan.org) vlc-noX VideoLAN Project (http://www.videolan.org) libvlccore8 VideoLAN Project (http://www.videolan.org) libvlc5 VideoLAN Project (http://www.videolan.org) -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=900092 --- Comment #6 from Dominique Leuenberger <dimstar@opensuse.org> --- My repositories, with priorities # | Alias | Name | Enabled | Refresh | Priority ---+--------------------------+--------------------------+---------+---------+--------- 1 | GF-Branch | GF-Branch | Yes | Yes | 72 2 | GNOME:Apps | GNOME:Apps | Yes | Yes | 75 3 | GNOME:Factory | GNOME:Factory | Yes | Yes | 75 4 | GNOME:Next | GNOME:Next | Yes | Yes | 70 5 | GStreamer | GStreamer | Yes | Yes | 66 6 | Kernel | Kernel | No | No | 99 7 | OBS | OBS | No | No | 99 8 | VideoLAN | VideoLan Repository | Yes | Yes | 65 9 | games | games | Yes | No | 99 10 | isv:ownCloud:desktop | isv:ownCloud:desktop | Yes | Yes | 99 11 | openSUSE:Factory | openSUSE:Factory | Yes | Yes | 80 12 | openSUSE:Factory-Debug | openSUSE:Factory-Debug | Yes | Yes | 99 13 | openSUSE:Factory_NON-OSS | openSUSE:Factory_NON-OSS | Yes | Yes | 80 14 | openSUSE_Tools | openSUSE_Tools | No | Yes | 99 -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=900092 Dominique Leuenberger <dimstar@opensuse.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Flags|needinfo?(dimstar@opensuse. | |org) | --- Comment #7 from Dominique Leuenberger <dimstar@opensuse.org> --- Created attachment 610009 --> http://bugzilla.opensuse.org/attachment.cgi?id=610009&action=edit zypper in --debug-solver vlc -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=900092 --- Comment #8 from Dominique Leuenberger <dimstar@opensuse.org> --- and last, but not least:
zypper se -s vlc-noX Loading repository data... Reading installed packages...
S | Name | Type | Version | Arch | Repository --+-------------------+---------+-------------+--------+----------------------- i | vlc-noX | package | 2.1.5-112.1 | x86_64 | (System Packages) v | vlc-noX | package | 2.1.5-114.3 | x86_64 | VideoLan Repository v | vlc-noX | package | 2.1.5-114.3 | i586 | VideoLan Repository v | vlc-noX | package | 2.1.5-5.1 | x86_64 | openSUSE:Factory v | vlc-noX | package | 2.1.5-5.1 | i586 | openSUSE:Factory is what would be currenlty available. Curently, for vlc-(beta-)nox I have in the repos: S | Name | Type | Version | Arch | Repository --+--------------+---------+--------------------+--------+-------------------- | vlc-beta-noX | package | 3.0.0-2014100306.4 | x86_64 | VideoLan Repository | vlc-beta-noX | package | 3.0.0-2014100306.4 | i586 | VideoLan Repository i | vlc-noX | package | 2.1.5-112.1 | x86_64 | (System Packages) v | vlc-noX | package | 2.1.5-114.3 | x86_64 | VideoLan Repository v | vlc-noX | package | 2.1.5-114.3 | i586 | VideoLan Repository v | vlc-noX | package | 2.1.5-5.1 | x86_64 | openSUSE:Factory v | vlc-noX | package | 2.1.5-5.1 | i586 | openSUSE:Factory and for libvlc5: S | Name | Type | Version | Arch | Repository --+-------------------+---------+--------------------+--------+----------------------- i | libvlc5 | package | 2.1.5-112.1 | x86_64 | (System Packages) v | libvlc5 | package | 3.0.0-2014100306.4 | x86_64 | VideoLan Repository v | libvlc5 | package | 2.1.5-114.3 | x86_64 | VideoLan Repository v | libvlc5 | package | 3.0.0-2014100306.4 | i586 | VideoLan Repository v | libvlc5 | package | 2.1.5-114.3 | i586 | VideoLan Repository v | libvlc5 | package | 2.1.5-5.1 | x86_64 | openSUSE:Factory v | libvlc5 | package | 2.1.5-5.1 | i586 | openSUSE:Factory as said: vlc-nox / vlc-beta-noX require libvlc5 = %{version}, to ensure the unstable branch does not mix in with the unstable branch. vlc-noX conflicts with vlc-beta-noX (as they are mutually exclusive) -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=900092 --- Comment #9 from Michael Andres <ma@suse.com> ---
job: install libvlc5 -3.0.0-2014100306.4.x86_64 job: install vlc -2.1.5-114.3.x86_64 job: install vlc-noX -2.1.5-114.3.x86_64 job: install vlc-qt -2.1.5-114.3.x86_64
PK simply selects the highest available version for individual packages. This makes it fail in your scenario. 'zypper up' issues only one job: 'update all packages'. This leaves it to the resolver to select the matching packages and the resolver sees the conflict, thus is able to avoid it. ---- After a glimpse at the zypp-backend code I see the backend_get_updates_thread calling zypp_get_updates which calls zypp_get_package_updates which finally calls getZYpp()->resolver()->doUpdate(). This call issues a 'update all packages' job, which is also visible in the logs. PK even sees the correct libvlc5;2.1.5-114.3;x86_64;VideoLAN as result of this call:
2014-10-14 18:06:53 <1> linux.site(22582) [packagekit] pk-backend-zypp.cpp(zypp_get_package_by_id):880 libvlc5;2.1.5-114.3;x86_64;VideoLAN 2014-10-14 18:06:53 <1> linux.site(22582) [packagekit] pk-backend-zypp.cpp(zypp_get_package_by_id):933 found (18958)libvlc5-2.1.5-114.3.x86_64(VideoLAN) 2014-10-14 18:06:53 <1> linux.site(22582) [packagekit] pk-backend-zypp.cpp(backend_update_packages_thread):3131 sel package libvlc5
But it looks like only the name 'libvlc5' survives and finally leads to selection of the highest available 'libvlc5'
2014-10-14 18:06:53 <1> linux.site(22582) [libsolv] PoolImpl.cc(logSat):111 job: install libvlc5-3.0.0-2014100306.4.x86_64
I need to have a closer look at the code.... Maybe Coolo knows why? -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=900092 Michael Andres <ma@suse.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Flags| |needinfo?(coolo@suse.com) -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=900092 --- Comment #10 from Michael Andres <ma@suse.com> --- (In reply to Dominique Leuenberger from comment #7)
Created attachment 610009 [details] zypper in --debug-solver vlc
JFYI: All the information from comments 5,6,8 is included in a solver testcase. A testcase is not tied to a specific job, but it contains all repos, packages, patches, patterns, dependencies, hardware, locks,... and other settings which are relevant for dependency resolution. So with a testcase you can mimic almost any job or query. -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=900092 --- Comment #11 from Michael Andres <ma@suse.com> --- @Coolo: Looks like the issue was introduced by
commit d3d14631042237bcfe6fb30a60e59bb6d94af425 Author: Stephan Kulow <coolo@suse.de> Date: Thu Feb 21 17:40:24 2013 +0100
zypp: only allow to update candidates (fdo#61231)
For non-patches the - in this case correctly determined sat::Solvable - is converted into the corresponding ui::Selectable::updateCandidateObj. Or for non-zyppers: The solver computed 'libvlc5;2.1.5-114.3;x86_64;VideoLAN' is converted into the 'best' libvlc5 available (highest version but same arch and vendor as the installed one). Is there a way to tell, whether the packageIDs passed to backend_update_packages_thread were (correctly) determined by a previous call to backend_get_updates_thread or whether it's the 'only allow to update candidates (fdo#61231)' case? -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=900092 http://bugzilla.opensuse.org/show_bug.cgi?id=900092#c12 Dominique Leuenberger <dimstar@opensuse.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |one@contezero.com --- Comment #12 from Dominique Leuenberger <dimstar@opensuse.org> --- *** Bug 855827 has been marked as a duplicate of this bug. *** -- You are receiving this mail because: You are on the CC list for the bug.
http://bugzilla.opensuse.org/show_bug.cgi?id=900092 Dominique Leuenberger <dimstar@opensuse.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|bnc-team-gnome@forge.provo. |sckang@suse.com |novell.com | -- You are receiving this mail because: You are on the CC list for the bug.
participants (1)
-
bugzilla_noreply@novell.com