Problem
CPAN sucks.
OK specifically my problem was that I had a CentOS 4.x server with Bugzilla 3.4.2 installed on it. I tried to upgrade Bugzilla 3.4.2 to 3.6.2. Running
checksetup.pl listed off this laundry list of modules it wanted installed, and by the time that hilarity was dealt with,
checksetup.pl was failing with
Checking for DBD-mysql (v4.00) ok: found v4.017
/usr/bin/perl: symbol lookup error: lib/x86_64-linux-thread-multi/auto/DBD/mysql/mysql.so: undefined symbol: DBIc_TRACE_LEVEL
#
...and by "failing with" I mean aborting without telling me anything further.
Research on the web insisted that this problem was due to my building the DBD module against the wrong version of mysql (not likely since there is only one version, RPM-supplied, installed); or that I had two different DBDs installed and I should "uninstall one of them". Failing any documentation on how to figure out if that was even partially true, I never solved this.
So to work around THAT problem I created a VM with a fresh fresh CentOS 5.5 install, patched it, and then moved my incompletely upgraded Bugzilla instance to that. Since I will never run
yum update here again (or if I do, I'll exclude perl-* from the modules to be upgraded), I let
install-module.pl do its nasty CPAN thing to this system.
Once that got settled, attempts to look at anything queried led to the error:
undef error - Cannot determine local time zone
Solution
# cd $BUGZILLA_home
# perl install-module.pl Class::Singleton
Commentary
What appears to be happening is that one of the Perl modules that deal with time depend on Class::Singleton, but the dependency isn't described properly in CPAN. So either the relevant Time module installs without Class::Singleton, or the install says "Hey, there's one here, hooray!" when in fact a newer version is required.
But yeah, CPAN sucks.