(In reply to Paul Clarke from comment #2) > > 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. > > That certainly explains the observed behavior. > > Apologies for my ignorance, but it seems I need to inject a "dependencies > version" for the respective packages, which is different than the package > version. (I admit I'm a bit lost on the difference.) > > Is the "fix", presuming I have control over the 'advance-toolchain-devel' > packages, is to add specific "Provides" version tags? Something like: > Provides: advance-toolchain-devel == 9.0-3 > > ...for ALL of such packages in the repo? I'd have the same problem unless I > changed them all, I presume. Answering my own question, I stumbled across a reference that said that virtual packages cannot have versioning. So, I think the only solution is a metapackage that points to the latest version.