[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