我使用的是安装了 Perl 5.8.8 的 Ubuntu 8.04。我安装了 Bugzilla 3.4.4 和一些自定义脚本,它运行良好。我不得不将 Ubuntu 从 8.04 升级到 10.04,并且 Perl 也自动从 Perl 5.8 升级到 5.10。现在,访问 Bugzilla 会显示与 Perl 模块相关的错误消息。尝试运行时checksetup.pl
,我收到以下错误消息:
root@cvsnew:/var/www/bugzilla-3.4# perl checksetup.pl
* This is Bugzilla 3.4.3 on perl 5.10.1
* Running on Linux 2.6.32-24-generic-pae #39-Ubuntu SMP Wed Jul 28 07:39:26 UTC 2010
Checking perl modules...
Checking for CGI.pm (v3.33) ok:
found v3.48
perl: symbol lookup error:
lib/i486-linux-gnu-thread-multi/auto/Digest/SHA/SHA.so: undefined symbol: Perl_Tstack_sp_ptr
访问 Bugzilla 会抛出:“500 内部服务器错误”。
我研究了这个问题,发现这个问题的出现是因为升级 Ubuntu 会自动将 Perl 5.8 升级到 5.10。似乎 Perl 5.10.1 与之前的版本不二进制兼容。
现在,我想卸载 Perl 5.10.1 并在 Ubuntu 10.04 机器上安装 Perl 5.8.8。如果有人已经这样做了或者分享了执行此操作所需的步骤/命令,我将不胜感激。
答案1
也许你可以通过偏离 来解决问题apt
。保持操作系统发行版的 perl 原样,并使用perlbrew在另一个位置安装 perl 的替代版本,比如说/opt/perl
。
然后使用 shell 包装器等来触发 perlbrew 以便在适当的时间选择适当的 perl。
答案2
是的——更改 perl 基本版本时,您需要更新所有 perl 模块。
apt-get install perl-cgi
依此类推,直到正确为止。
答案3
一般来说,您使用的 APT 打包系统支持混合不同发行版的版本,但这也可能造成很大的混乱。
如果您冒着破坏系统的风险,请尝试以下操作(未经测试):
- 在你的“业力”中添加一行“hardy”而不是“业力”
/etc/apt/sources/list
(业力行仍然留在那里) aptitude install perl -t hardy
应该安装 hardy 的 perl 版本