本节提供常见 Bugzilla 安装问题的解决方案。
尝试执行 perl -MCPAN -e 'install CPAN',然后继续。
某些旧版本的 CPAN 工具集在升级 Perl 模块方面有些幼稚。当一些模块被整合到 5.6.1 版本的核心 Perl 发行版中时,CPAN 认为更新这些模块的最佳方法是下载 Perl 发行版本身并构建它。不用说,这给几乎所有人带来了麻烦。使用上面的命令行升级到较新版本的 CPAN 应该可以解决问题。
由于 DBD::mysql 中的一个错误(Bugzilla 团队对此无法控制),可能会出现以下错误消息
DBD::Sponge::db prepare failed: Cannot determine NUM_OF_FIELDS at D:/Perl/site/lib/DBD/mysql.pm line 248. SV = NULL(0x0) at 0x20fc444 REFCNT = 1 FLAGS = (PADBUSY,PADMY) |
要解决此问题,请转到<perl 路径>/lib/DBD/sponge.pm在您的 Perl 安装中,并将
my $numFields; if ($attribs->{'NUM_OF_FIELDS'}) { $numFields = $attribs->{'NUM_OF_FIELDS'}; } elsif ($attribs->{'NAME'}) { $numFields = @{$attribs->{NAME}}; |
替换为
my $numFields; if ($attribs->{'NUM_OF_FIELDS'}) { $numFields = $attribs->{'NUM_OF_FIELDS'}; } elsif ($attribs->{'NAMES'}) { $numFields = @{$attribs->{NAMES}}; |
(注意添加到 NAME 的 S。)
如果您在 SuSE Linux 或其他具有 “paranoid” 安全选项的发行版上安装 Bugzilla,则 checksetup.pl 脚本可能会失败并显示以下错误
cannot chdir(/var/spool/mqueue): Permission denied |
这是因为您的/var/spool/mqueue目录的模式为 “drwx------”。以 root 身份键入 chmod 755 /var/spool/mqueue 以解决此问题。
这是由 Perl 5.6.0 发行版中包含的 File::Temp 版本中的一个错误引起的。已经报告了许多此错误的细微变体。示例可以在 图 4-1 中找到。
图 4-1. 其他 File::Temp 错误消息
Your vendor has not defined Fcntl macro O_NOINHERIT, used at /usr/lib/perl5/site_perl/5.6.0/File/Temp.pm line 208. Your vendor has not defined Fcntl macro O_EXLOCK, used at /usr/lib/perl5/site_perl/5.6.0/File/Temp.pm line 210. Your vendor has not defined Fcntl macro O_TEMPORARY, used at /usr/lib/perl5/site_perl/5.6.0/File/Temp.pm line 233. |
许多人报告说,升级到 5.6.1 或更高版本为他们解决了问题。一个不那么复杂的修复方法是应用 图 4-2 中的补丁。该补丁也可以作为 补丁文件 提供。
图 4-2. Perl 5.6.0 中 File::Temp 的补丁
--- File/Temp.pm.orig Thu Feb 6 16:26:00 2003 +++ File/Temp.pm Thu Feb 6 16:26:23 2003 @@ -205,6 +205,7 @@ # eg CGI::Carp local $SIG{__DIE__} = sub {}; local $SIG{__WARN__} = sub {}; + local *CORE::GLOBAL::die = sub {}; $bit = &$func(); 1; }; @@ -226,6 +227,7 @@ # eg CGI::Carp local $SIG{__DIE__} = sub {}; local $SIG{__WARN__} = sub {}; + local *CORE::GLOBAL::die = sub {}; $bit = &$func(); 1; }; |