[Rpm-maint] [Suse-patch] Revert provides as obsoletes behavior

Florian Festi ffesti at redhat.com
Tue Jun 12 13:49:25 UTC 2007


Florian Festi wrote:
 > Reading the problem descriptions I have the suspicion that the problem is
 > not that obsoletes match against provides but that rpm uses the obsolete
 > mechanism to do updates - to find the packages it needs to remove to be
 > more precise. This was fine as long as obsoletes just matched against pkg
 > names which is what the update should do, too. But with the "new" obsolete
 > behavior updates and obsoletes are different and should uses different
 > code paths.

 > If this is true (I have to admit that I did not look into the code) fixing
 > the update behavior would be the way to go IMHO and not altering the
 > actually unrelated obsolete handling.

After having a look at the code it is quite clear what's the problem here:

The first line is causing most of the problems as it treats the updated 
package like an obsolete on its own name. This is obviously bullshit as rpm 
-U foobar should only remove packages named foobar and packages explicitly 
obsoleted by the new package. The python case mentioned earlier is a good 
example for that.

In opposite the posting from Michael Schroeder I want to argue that matching 
real obsoletes against provides (second modified line of the patch) is the 
right thing (tm). If a package wants to replace a capability it should not 
need to know what packages anywhere (think of 3rd party repositories) do 
also provide that. I also don't see a problem that this might break other 
dependencies because they are all checked and the new package would be 
rejected with unresolved dependencies if it doesn't fix these problems.
Of course is it still true that obsoletes are dangerous and need to be 
handled with care but this is an packaging issue...

Florian Festi



More information about the Rpm-maint mailing list