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

Michael Schroeder mls at suse.de
Tue Jun 12 13:56:33 UTC 2007


On Tue, Jun 12, 2007 at 03:49:25PM +0200, Florian Festi wrote:
> 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.

It's not "obviously bullshit". Obsoletes tells rpm that the package
provides a newer version of something. The same thing happens if you
install a new version of a package.  If package A provides B and
you install a new version of B, it is not obviously bullshit if
A gets deleted, as A is no longer needed and B is newer. It's
just unexpected.

> 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.

Yes, that's true *if you want to replace capabilities*. Most of the
times obsoletes is used to replace packages, though, and this is
where the danger lies.

> 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.

Only if some other package depends on the obsoleted package.

Cheers,
  Michael.

-- 
Michael Schroeder                                   mls at suse.de
SUSE LINUX Products GmbH, GF Markus Rex, HRB 16746 AG Nuernberg
main(_){while(_=~getchar())putchar(~_-1/(~(_|32)/13*2-11)*13);}



More information about the Rpm-maint mailing list