[Yum-devel] [PATCH][RFC] Add skip-broken to YumBase

Florian Festi ffesti at redhat.com
Tue Nov 20 16:12:47 UTC 2007


Tim Lauridsen wrote:
> Florian Festi wrote:
>>  * Your patch fails to make sure that the problematic packages are not 
>> readded by dependencies. If that happens you run into an endless loop. 
>> The right solution would be an excluded_pkgs set that is ignored for 
>> all depsolving operations. If pkgs are removed from the transaction 
>> they get put into that set. This way we can never get back to the same 
>> situation and can not run into an endless loop.
> 
> Added some code to clean out the added deps to a package with problems

Hmm, while this is a good idea it does not fix the cases I had in mind. I 
tried to come up with an test case but we need some fixes to make that work. 
I'll have to talk to James Bowes to get that fixed up as be both have the 
half of the solution in our repositories

>>  * As your patch works on the packages that have problems and not on 
>> the packages that cause the problems there might be interesting side 
>> effects.
> Yes, this is the problem with trying to solve depsolve problem
> 
> foo-2.0 can't update foo-1.0, because bar require foo = 1.0.
> So bar is causing the issue, foo-2.0, but i would not be sane to remove
> bar. So we used remove foo-2.0 from the transaction, to get on with
> other stuff.

As the .process*() methods know the situations quite good it might be an 
idea to do different things depending on what the actual problem is in there.

>>  * Like readding a package (by removing the erase txmbr) that has been 
>> updated - resulting in the old and the new packages beeing installed 
>> (welcome to the world of multilib file conflicts!)
> I am not sure i understand this, please give some example.
If there is an update and removing the older pkg produces a problem you are 
removing the transaction member that removes that packages. This means you 
are adding that package again. If I understood the code right the new 
package is not removed so you end up with the old and the updating package 
installed.

Btw: you don't need to check for inclusion before adding to a set. You can 
just call .add()

Florian



More information about the Yum-devel mailing list