The problem is inherent on line 103 in
/usr/lib/perl5/site_perl/5.6.1/i386-linux/urpm.pm, where a check is done
to see if read_config has been previously called by checking
$urpmi->{media}. Unfortunatley this variable has, at some point, been
referenced and is set to a null array even though read_config hasn't
been called yet.
It would be better coding practice to use a real flag, than to check
something that's "supposed to be undefined" - at any rate, removing the
check (leaving the second half on the line intact) eliminates the
symptom - but isn't the fix.
In /usr/sbin/urpmi, the logic that determines when read_config gets
called needs re-examined. In particular, the referencing of
$urpmi->{media} in other routines (the filter_xxx, for example) when
read_config hasn't been called is a problem. Again, if a routine needs a
variable set in another routine it's probably a good idea to validate
that said routine has been called.
Lastly, I'd like to comment on Mandrake's decidedly inadvisable practice
of putting broken packages in the cooker mirrors, PARTICULARLY the ones
that are used to maintain cooker distributions (urpmi, grpmi, rpmdrake).
If you don't have a solid, broad-based, thorough testbed for exercizing
these packages out, then spend some time and effort to CREATE ONE. This
is not the first time that you've broken the update mechanisms, and it
only demonstrates your lack of testing and quality assurance. While I
realize cooker is a place for new code, that's a poor excuse for your
failure to thoroughly work out your code prior to letting the world try
it - again, and in particular, the code that most everyone uses to
update their test systems.
Those of us on the bleeding edge would appreciate your work much more if
you'd at least care enough to validate that code which you have complete
control over prior to its release, even in a "pre-beta" environment.
Regards,
Paul