On 21.05.2022 15:53, Neal Gompa wrote: ...
of RPM.
So in both cases it is up to higher level package management like libsolv to chose the right packages, and comparing
Provides: NetworkManager:.../libnm-device-plugin-wifi.so
and
Obsoletes: NetworkManager < V-R
in the NetworkManager-wifi, the former is certainly more logical and avoids issues with different V-R in different projects.
The former is a YaST/Zypp specific hack, the latter is *actually* how RPM wants you to do it. Moreover, if you download all the built NM packages and do "rpm -Uvh" on them, RPM would do the right thing.
It will simply unconditionally install everything you throw at it. It is irrelevant whether there are some Obsoletes or not. The end result looks like what you wanted, but not because RPM does any magic, but because something decided to call RPM with the correct parameters. It is far from "RPM doing the right thing".
That's the point of using the actual RPM-defined behavior for this.
We are going in circle - *something* must have already decided to download *both* NetworkManager-wifi *and* NetworkManager. So whatever we are using this will *always* be "YaST/Zypp" hack.
This behavior is compatible with Zypp, YaST, DNF, and any other dependency resolver, whereas your Provides hack only works in YaST/Zypp.
RPM documentation does not cover the case of splitting off subpackage at all. What it tries to say - if package foo was replaced by package bar that Obsoletes package foo, then solver should select package bar for installation (and remove package foo actually). In this case NetworkManager still exists. So you have one of a) NetworkManager-wifi Obsoletes NetworkManager then you are not able to install NetworkManager and NetworkManager-wifi together at all b) NetowrkManager-wifi Obsoletes NetworkManager < cutover but then after update we have NetworkManager of version cutover+1 and condition does not apply at all, so there is no reason to select NetworkManager-wifi. Obsoletes is simply the wrong tool for this split.