http://bugzilla.opensuse.org/show_bug.cgi?id=979528
http://bugzilla.opensuse.org/show_bug.cgi?id=979528#c1
--- Comment #1 from Michael Andres
I'm trying to install a package, which has a dependency on package "A >= version". The repository has package "A" with several versions, including "version" and "version+1". I would expect "version+1" to be installed, but that is not happening. Am I misunderstanding something about the dependency resolution?
I'll try to explain: - A package dependency has 'NAME [op VERSION]' (op: == != < <= > >=). A missing '[op VERSION]' (VERSION_RANGE definition) means 'any VERSION'. ! VERSION is NOT the version of the providing package, it's a property of the dependency - A package has a NAME and a VERSION; by this it implicitly provides the dependency 'NAME == VERSION' Two dependencies match if they refer to the same NAME and define an overlapping VERSION_RANGE (non empty intersection). A dependency matches a package, if it matches one of the packages 'Provides'. Back to your case: - The advance-toolchain-at*-devel packages all 'Provide: advance-toolchain-devel'. I.e. they match 'advance-toolchain-devel' in 'any VERSION'! That's why zypper search --provides 'advance-toolchain-devel >= 8.0-5' matches all 'advance-toolchain-at*-devel' packages. Remember: '8.0-5' is not a package version, but the dependencies version range. As all packages provide 'any VERSION' the '>= 8.0-5' is basically 'useless' Among all available PACKAGES matching the dependency, the resolver usually prefers the PACKAGE with the lex. least name: advance-toolchain-at8.0-devel in the highest available version: 8.0-6. -- You are receiving this mail because: You are on the CC list for the bug.