"неопределенный символ: mg_free_type" при установке mod_perl 2.0.10 с Apache 2.4.26 и Perl 5.10.1
Я пытаюсь установить 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
2 ответа
Я решил это путем обновления до 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
Эта проблема была исправлена в патче mod_Perl 4 января 2018 года: https://github.com/apache/mod_perl/commit/f4d886fdf7d79d54a0647336b5623b840a053eab
Скомпилируйте с этой версией git source, чтобы исправить проблему, или обновите Perl до v5.13.6+
Это изменение в Perl, как было введено в источнике Perl v5.13.6+.