参数“perl_version”不是数字 ge (>=) 中的数字 (eval 534) 第 1 行

参数“perl_version”不是数字 ge (>=) 中的数字 (eval 534) 第 1 行

自上次软件包更新以来,我的所有 Ubuntu 14.04.1 服务器都向我发送带有 Cron 警告的电子邮件 - 主题是

Cron 测试 -e /usr/sbin/amavisd-new-cronjob && /usr/sbin/amavisd-new-cronjob sa-sync

带有正文内容

Argument "perl_version" isn't numeric in numeric ge (>=) at (eval 530) line 1.
Argument "perl_version" isn't numeric in numeric ge (>=) at (eval 1023) line 1.
Argument "perl_version" isn't numeric in numeric ge (>=) at (eval 532) line 1.
Argument "perl_version" isn't numeric in numeric ge (>=) at (eval 1025) line 1.

我是否需要担心这个问题?如何解决?还是只能等待 Amavis 更新?

谢谢。

答案1

在@cgross 的回答评论中,看来我不是唯一一个没有帮助将 SpamAssassin 升级到 3.4.0 的人

因此,我将根据我所做的事情来创建自己的答案。


使用以下方式下载补丁

wget "http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Conf/Parser.pm?r1=1642207&r2=1642206&pathrev=1642207&view=patch" -O parser.pm.patch
wget "http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Conf.pm?r1=1642207&r2=1642206&pathrev=1642207&view=patch" -O conf.pm.patch

切换到root并修补文件

su
patch /usr/share/perl5/Mail/SpamAssassin/Conf/Parser.pm < parser.pm.patch
patch /usr/share/perl5/Mail/SpamAssassin/Conf.pm < conf.pm.patch

答案2

对于使用sa-learn:切换到较新版本的 Mail-SpamAssassin(例如 3.4.0)。如果您使用 CPAN 安装了 Mail::SpamAssassin,则可以像这样更新它:

cpan upgrade Mail::SpamAssassin

对于其他人,请查看您的脚本并尝试合并 Mail-SpamAssassin 中使用的解决方法:

# Store the version for later use
my $mm_version = $ExtUtils::MakeMaker::VERSION;

# avoid stupid 'Argument "6.30_01" isn't numeric in numeric ge (>=)' warnings;
# strip off the beta subversion noise that causes the trouble.
$mm_version =~ s/_\S+$//;      # "6.30_01" => "6.30"

if ($mm_version+0 < 5.45) {
  die "SpamAssassin Makefile.PL requires at least ExtUtils::MakeMaker v5.45";
}

答案3

这是一个警告,而不是致命错误。可以安全地忽略它。这是由于最近的规则更新使用了已添加到主干但尚未发布的 SA 条件。

Germar 的答案可以解决问题,但对于那些想要使用纯发行版代码的人来说可能不可接受。

我不知道发行版会多快整合 SA 变化:https://svn.apache.org/viewvc?view=revision&revision=1642207

相关规则已在规则沙箱中禁用,它将(希望)在今晚(2014-11-30)之前在更新中发布,然后此警告就会停止。

相关内容