使用 Apache 2.4.26 和 Perl 5.10.1 安装 mod_perl 2.0.10 时"undefined symbol: mg_free_type"



我正在尝试安装mod_perl 2.0.10,以与新的apache 2.4实例一起使用。我有Apache 2.4.26单独运行,但是我还需要安装MOD_PERL以进行几个模块工作。

这是一个问题:mod_perl总是未能通过其测试声称:

Syntax error on line 82 of .../t/conf/httpd.conf: Cannot load .../src/modules/perl/mod_perl.so into server: .../src/modules/perl/mod_perl.so: undefined symbol: mg_free_type

我可以在此处找到的唯一信息:安装mod_perl2时错误。不幸的是,它没有解决问题。

使用CentOS版本6.8(最终(x86_64 x86_64 x86_64 gnu/linux

更多的日志:

> make test
cd "src/modules/perl" && make
make[1]: Entering directory `/software/apa/mod_perl/mod_perl-2.0.10/src/modules/perl'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/software/apa/mod_perl/mod_perl-2.0.10/src/modules/perl'
...
make[1]: Leaving directory `/software/apa/mod_perl/mod_perl-2.0.10/xs'
/usr/bin/perl -Iblib/arch -Iblib/lib 
    t/TEST -clean
[warning] setting ulimit to allow core files
ulimit -c unlimited; /usr/bin/perl /software/apa/mod_perl/mod_perl-2.0.10/t/TEST -clean
APACHE_TEST_APXS= APACHE_TEST_GROUP= APACHE_TEST_HTTPD= APACHE_TEST_PORT= APACHE_TEST_USER= 
    /usr/bin/perl -Iblib/arch -Iblib/lib 
    t/TEST -bugreport -verbose=0 
[warning] setting ulimit to allow core files
ulimit -c unlimited; /usr/bin/perl /software/apa/mod_perl/mod_perl-2.0.10/t/TEST -bugreport -verbose=0
/software/apa/apa24/bin/httpd.prefork  -d /software/apa/mod_perl/mod_perl-2.0.10/t -f /software/apa/mod_perl/mod_perl-2.0.10/t/conf/httpd.conf -D APACHE2 -D APACHE2_4 -D PERL_USEITHREADS
using Apache/2.4.26 (prefork MPM)
waiting 300 seconds for server to start: .httpd.prefork: Syntax error on line 82 of /software/apa/mod_perl/mod_perl-2.0.10/t/conf/httpd.conf: Cannot load /software/apa/mod_perl/mod_perl-2.0.10/src/modules/perl/mod_perl.so into server: /software/apa/mod_perl/mod_perl-2.0.10/src/modules/perl/mod_perl.so: undefined symbol: mg_free_type
[  error] 
server has died with status 255 (t/logs/error_log wasn't created, start the server in the debug mode)
sh: line 1:  3359 Terminated              /usr/bin/perl /software/apa/mod_perl/mod_perl-2.0.10/t/TEST -bugreport -verbose=0
make: *** [run_tests] Error 143

当他们在mod_perl 2.0.10:https://github.com/apache/mmod_perl/commit/82827132efd325c25cc413c41bbb61bb61333333333333.dafafly

中添加了Perl版本5.22的支持时,引入了此错误。 47E167A883BE1B

,然后在2018年1月4日在MOD_PERL补丁中修复(2.0.11-DEV(:https://github.com/apache/mod_perl/commit/f4d886fdf79d79d54a0647336b5623b5623b840a053eab

要解决此问题,您必须从mod_perl 2.0.11-dev(或中继版本(的此提交的来源进行编译,以解决问题,如果您有perl< = 5.13.6,或者如果您可以将Perl升级到版本> 5.13.6您可以使用mod_perl 2.0.10。

编译

Perl版本5.13.6在此Perl commit中引入的Perl的更改:https://perl5.git.perl.org/perl.git/commit/d908838680ec40ee85f59ee66f59e66f5f56a2225f9b4

src/modules/perl/modperl_env.c中的mod_perl fix(在最后2.0.11-dev中(使用mg_free的上下文用法来解决问题:

#if MP_PERL_VERSION_AT_LEAST(5, 13, 6)
    mg_free_type((SV*)ENVHV, PERL_MAGIC_env);
#else
    mg_free((SV*)ENVHV);
#endif

我通过升级到perl 5.14.0或更新来解决此问题。

在Perl文档中,mg_free_type首先出现在版本5.14.0中。您可以在5.12.4中没有列出的"魔法功能"下看到,但在5.14.0

我不确定这是否是正确的解决方案,因为mod_perl2.0列出了perl 5.6.1作为最小版本: https://perl.apache.org/docs/2.0/user/install/install.html#item_Perl

相关内容

  • 没有找到相关文章

最新更新