Is yum groups broken in f20 ?

Adam Williamson awilliam at redhat.com
Sun Dec 15 00:29:38 UTC 2013


On Sat, 2013-12-14 at 14:26 -0800, Adam Williamson wrote:
> On Wed, 2013-12-11 at 22:35 -0600, Michael Cronenworth wrote:
> > On 12/08/2013 08:37 AM, Mateusz Marzantowicz wrote:
> > > Curious, why it blew up right now, just before F20 is released. It
> > > should have happened in alpha and not now.
> > >
> > > Workaround is to yum group mark remove <group name here> for every group
> > > on the list. What a waste of time.
> > 
> > Whatever you do - do not run "yum group mark convert". Now one of my systems 
> > wants to install every Fedora package with "yum update".
> > 
> > This affects all Fedoras with yum -120. Here's the parent bug:
> > https://bugzilla.redhat.com/show_bug.cgi?id=1014202
> 
> I've found some time to look into this today, and I do not believe those
> two are the same bug. The error looks the same at a quick glance, but it
> is not the same and it is not on the same codepath. (yum's code actually
> contains about a dozen very similar warning messages produced by
> different checks at different points).
> 
> I believe I've identified probably the most common case of this bug
> quite precisely. I forgot Piruthiviraj had filed #1039348 , so I filed a
> new bug about it, with the details I was able to figure out:
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=1043202
> 
> I managed to identify the specific change to yum which made these
> messages appear, and I think I know the attributes of the groups for
> which it appears: non-environment groups that are listed as installed
> in /var/lib/yum/groups/installed (also, possibly, through whatever other
> mechanisms yum has for listing installed groups; like everyone else, I'm
> having a lot of trouble grokking this yum-groups-as-objects thing), that
> exist in comps, but have <uservisible> set to false.
> 
> It at least appears the check that was added is being run in
> circumstances where it wasn't expected to run. I don't know how many (if

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's quite simple to reproduce, actually. From a clean F20 install, just
try this:

# yum group install books
				(group installed)

# yum group install books
Loaded plugins: langpacks, refresh-packagekit
No packages in any requested group available to install or update
#
				(that's correct)

# yum install @books
Loaded plugins: langpacks, refresh-packagekit
Warning: group books does not exist.
Nothing to do
				(the spurious error appears!)

Unless I'm entirely misreading yum's source, even though "group install
foo" and "install @foo" are meant to be synonyms, they're implemented in
different functions in two different files - and the two aren't even
copy/paste, they're implemented quite differently!

The bug we're hitting is really just that the function which implements
"yum install @foo" incorrectly reports "group foo does not exist" if
group foo is *installed*, and that function is - for some reason -
invoked when you run "yum update". I have no idea why yum thought it was
a good idea to write two different functions in two different files to
do the same thing, why the _at_groupinstall function is printing this
error for groups that are installed but the installGroups function
doesn't, or why the _at_groupinstall function gets called for all
installed groups when you do 'yum update' (I suppose it's to install any
extra packages for installed groups), I'll leave that to the experts.

Anyone with stronger python foo than mine might be interested to take a
look at /usr/lib/python2.7/site-packages/yum/__init__.py lines
4440-4477, which is where the buggy _at_groupinstall function that
implements "yum install @foo" lives, and /usr/share/yum-cli/cli.py lines
1902-1965, where the not-buggy installGroups function that implements
"yum group install foo" lives.

I filed a new bug - https://bugzilla.redhat.com/show_bug.cgi?id=1043207
- for the "_at_groupinstall function's check is buggy" portion of the
bug. I was keeping https://bugzilla.redhat.com/show_bug.cgi?id=1043202
for the "_at_groupinstall is called on yum update" part of the bug, but
I think I'll close it now, as that's probably not wrong.
-- 
Adam Williamson
Fedora QA Community Monkey
IRC: adamw | Twitter: AdamW_Fedora | XMPP: adamw AT happyassassin . net
http://www.happyassassin.net



More information about the test mailing list