> Obsolete graphs break down into several continouus and small > subgraphs, with most packages living on one-node graphs. > > In order to find the non-trivial graphs one can start with the > packages that do contain "Obsoletes:" (These are 345 out of 1892 > packages on a RH9 system with lots of additional repos included, > e.g. about 1/6th of the total packages ensemble). Then traverse down > the Obsoletes tree to the leaf node for each such package testing > whether any new Obsolete: obsoletes the staring package. And when you're dealing with 4000 packages across 10 repositories? > Even better: A policy to deal with obsoletes when "upgrading" would be > to ignore all packages that are being obsoleted by others. This is what yum update does now. obsoletes are not considered in the loop - only updates. installed: foo 0:1.1-1 available: foo 0:1.1-2 bar 0:1.0-1 (obsoletes foo) a yum update will update from foo 0:1.1-1 to 0:1.1-2 a yum upgrade should obsolete foo with bar 0:1.0-1 > A two, > three or larger loop would automatically be removed that way resulting > in a consistent package pool to opertae with. So in the above scheme > while traversing the obsoletes tree yum could remove the packages from > its internal ensemble. > > Does that make sense? no. Do you understand what the problem is with obsoleting by default? You're changing a package out from under someone and obsoletes are frequently quite surprising to users. The whole concept of obsoletes is surprising to users, in fact. This is why I am loathe to do it by default. Something I've considered doing is having obsoletes automatically considered and simply tell the users that they have packages installed that are being obsoleted by an available package. so when you run a yum update - it looks through and says - "oh, look at that, you've got a package installed (foo) that is due to be obsoleted (bar), you should think about that." The other problem I have with obsoletes by default is the possibility for two packages to obsolete the same package. Which one wins? foo is installed bar obsoletes foo baz obsoletes foo Do you install them both? That seems wrong somehow. -sv