![](https://seccdn.libravatar.org/avatar/af8a9293484ed04b89081d848929b19a.jpg?s=120&d=mm&r=g)
On Sat, May 21, 2022 at 8:54 AM Aaron Puchert <aaronpuchert@alice-dsl.net> wrote:
Am 21.05.22 um 14:27 schrieb Neal Gompa:
You've basically described a libsolv bug. RPM describes Obsoletes as working specifically in that manner: https://rpm-software-management.github.io/rpm/manual/dependencies.html#obsol...
Per RPM, every package that has a matching Obsoletes: condition should be added to the transaction as an update to replace the old one. So if you have foo split into foo and bar, foo and bar should obsolete old foo, so RPM upgrades that package to have both of them.
That's not fully clear to me though. The documentation says simply
As a result packages containing matching Obsoletes: are added as updates and replace the matching packages. Is that *all* packages containing matching Obsoletes, or just *any one* with a matching Obsoletes? My reading would be that some packages are added until everything is matched up.
Possibly one of them could obsolete another, because there had been two new versions in the meantime. Then we can't install all of them. So if we wanted to say "all" we would probably need to qualify further.
There does not have to be a one-to-one relationship between obsoleting and obsoleted packages. That's simply saying what's not the case. And yes, surely multiple packages can obsolete the same package, but that doesn't imply all of them will be installed.
Another problem is that if we have NetworkManager and NetworkManager-wifi obsolete older versions of NetworkManager, the solver might see no need for NetworkManager-wifi: after all, since the new NetworkManager updates the old NetworkManager, there is no old NetworkManager to be obsoleted anymore.
Hmm, right, we don't have the ability to predict the Release value, do we? That does make things slightly tricky... Sadly, we don't have an openSUSE-release-container package that we could use for conditional Requires. If we did, we could do something fancy like this: Requires: (NetworkManager-wifi unless (openSUSE-release-container or MicroOS-release)) -- 真実はいつも一つ!/ Always, there's only one truth!