Re: Is yum groups broken in f20 ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 2013-12-14 at 16:29 -0800, Adam Williamson wrote:

> OK, I think I got as far as I can with this. I was wrong about some
> things, above - I was reading /var/lib/yum/groups/installed wrong. It's
> actually rather simpler than I thought.

It was so simple I spent the rest of the day looking into the *other*
bugs in this area :) I think I've finally investigated as much as I can.
In the end, I think there are possibly four different bugs, many of them
inter-related or similar:

https://bugzilla.redhat.com/show_bug.cgi?id=1014202
https://bugzilla.redhat.com/show_bug.cgi?id=1043207
https://bugzilla.redhat.com/show_bug.cgi?id=1043221
https://bugzilla.redhat.com/show_bug.cgi?id=1043231

All of the following is, of course, my fallible QA-monkey deduction, so
I might be wrong. But I think I'm right. :)

When you ask them to install an environment group, both different
functions that do 'install a group' call out to another function, and if
it returns a GroupError, assume that meant the group they were called
against doesn't exist. This is an unsafe assumption: for each of these,
there are actually cases where getting a GroupError back means something
different. This is #1014202. Due to another bug - #1043231 - you
actually run into this issue any time you run 'yum groupinstall
(installed_environment_group)'.

There's a similar but different bug in one of the two functions when you
call it to install a package group: if you call it against an installed
package group, it erroneously prints 'group (groupname) does not exist'.
The *other* of the two functions doesn't have this problem. You can
demonstrate this one trivially: compare the output of 'yum install
@installed_group' and 'yum group install installed_group'. The first one
prints the warning, the second doesn't. I wasn't able to figure out
*why* the check goes wrong, but that's what's going on. This is
#1043207.

The reason you often see one or more of these warnings on 'yum update'
is that yum calls one of the 'install a group' functions when you run
'yum update' and prints the warnings in that case, even though I think
the devs were only thinking about the case where you directly run "yum
install @nonexistentgroup" when they added the warnings. I've suggested
that the warnings shouldn't be printed when the 'install a group'
function is being called indirectly like that: that's #1043221 . yum
calls _at_groupinstall, the function that suffers from #1043207 - so if
yum believes you have any groups installed, every time you run 'yum
update', you get a 'group (groupname) is not installed' warning for
every group that is installed.

The most complex bug is #1043231. yum tries to keep track of what
package groups were installed as a result of the installation of what
environment groups, but this seems to be completely broken: it winds up
believing that no package group was ever installed due to the
installation of an environment group. (If anyone has
a /var/lib/yum/groups/environment with the word 'true' in it anywhere,
let me know; it means I might be wrong about this). This is bad in
itself, and it's also the ultimate reason why 'yum groupinstall
(installed_environment_group)' claims the group doesn't exist: through a
dull chain of events described in
https://bugzilla.redhat.com/show_bug.cgi?id=1014202#c22 , the fact that
no package group is considered to have been installed as a part of that
environment group causes a GroupError to be raised, and as we learned
earlier (if we were paying attention!), bug #1014202 means that when
this happens, yum claims the group doesn't exist.

It's that simple! I'm sure James will have it all cleaned up in ten
minutes on Monday morning ;)

Note that all of the above is relevant only when the F19 "Yum groups as
objects" feature is active:
https://fedoraproject.org/wiki/Features/YumGroupsAsObjects . This is the
feature that causes /var/lib/yum/groups/installed
and /var/lib/yum/groups/environment to exist at all - it's the feature
whereby yum tries to keep track over time of what package and
environment groups are installed, instead of only working with them on
the fly when you actually run a 'group' command. One of the workarounds
that people have been passing around is setting yum's 'group_command'
option to 'compat', which you can do directly in /etc/yum.conf or by
running 'yum-config-manager --save --setopt=group_command=compat'. All
this does is make yum revert to its older behaviour and completely turn
off all the 'groups as objects' stuff, which means you'll avoid all of
these bugs. The 'groups as objects' stuff is better in theory than the
old behaviour, but given how broken it seems to be at present, setting
it to 'compat' probably isn't a bad idea.

Oh, and based on reports I've read, I'd strongly recommend against
running 'yum group mark convert', as yum apparently suggests to you at
times. What this is supposed to do, roughly, is "convert" a legacy
system to 'groups as objects' - it tries to figure out from your
installed package set and (I don't know what else, unicorn droppings?)
which groups you 'have installed', and write that info out
to /var/lib/yum/groups/* . However, it seems like in practice, it
decides that any group from which you have even a single mandatory or
default package is 'installed', and consequently, your next 'yum update'
will try to pull in all the other packages from all those groups, which
you probably don't want. I need to verify those reports and check if a
bug's been filed, though, that's next on my list.
-- 
Adam Williamson
Fedora QA Community Monkey
IRC: adamw | Twitter: AdamW_Fedora | XMPP: adamw AT happyassassin . net
http://www.happyassassin.net

-- 
test mailing list
test@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe:
https://admin.fedoraproject.org/mailman/listinfo/test





[Index of Archives]     [Fedora Desktop]     [Fedora SELinux]     [Photo Sharing]     [Yosemite Forum]     [KDE Users]

  Powered by Linux