Компиляция Perl без потоков

Я компилирую Perl 5.30.1 и буду использовать с ним mod_perl 2.0.11 и Apache 2.4.41.

Если я попытаюсь скомпилировать mod_perl с perl MakeFile.pm, я получу

Configuring Apache/2.4.41 mod_perl/2.0.11 Perl/v5.30.1
Using Perl 5.030001 w/o ithreads and httpd-2.4.
Failed requirements: Perl built with ithreads (build perl with -Duseithreads)

Мы не используем потоки, поэтому кажется, что проще всего было бы удалить это из параметров компиляции Perl...

Я вижу, как люди говорят, как его компилировать (думаю, в старых версиях Perl, где он был отключен по умолчанию?)

-Dusethreads

Но я предполагаю, что сейчас он включен по умолчанию? В таком случае, как мне скомпилировать без него?

Если я посмотрю файл myconfig, он предложит

useithreads=undef

Я пробовал такие вещи, как -Dusethreads=no или false и тому подобное, но, вероятно, мне не хватает того, что нужно использовать.

Я также ничего не имею против включения потоков в mod_perl (но также не могу найти, как это сделать), если нет падения производительности (сообщения на SO, кажется, предполагают, что есть 10% -ное попадание, но не уверен, что это до сих пор актуально)

Шаги, которые я предпринял (новый сервер), были ... загрузка

perl-5.30.1 and mod_perl-2.0.11

потом

CFLAGS='-m64 -mtune=nocona' ./Configure -des -A ccflags=-fPIC -Dprefix=/opt/perl  

perl -v не показывает потоки.

А потом для mod_perl

Perl Makefile.PL

Апач скомпилирован с

./configure --enable-proxy --enable-rewrite --enable-headers --enable-ssl --with-apr=/usr/local/apr/

Изменить: возможно, mod_perl нуждается в включенных потоках как есть, так что есть ли способ отключить это в параметрах компиляции, если это так.


person Ian    schedule 20.02.2020    source источник
comment
Perl по умолчанию строится без потоков (за исключением, может быть, Windows?)   -  person ikegami    schedule 20.02.2020
comment
Ошибка говорит о том, что требование наличия потоков не было выполнено, а это означает, что ему нужны потоки.   -  person ikegami    schedule 20.02.2020
comment
Ой! Я прочитал это неправильно, подумал, что это говорит о том, что я скомпилировал его с потоками ... Я думаю, тогда возникает противоположный вопрос, как сделать так, чтобы mod_perl не требовал потоков, или это обязательно.   -  person Ian    schedule 20.02.2020
comment
Кстати, простой способ узнать, была ли добавлена ​​поддержка потоков, — это perl -v. thread будет включено в строку арки (построенной для...), если поддержка была добавлена.   -  person ikegami    schedule 20.02.2020
comment
Не могли бы вы предоставить шаги, которые вы предприняли, чтобы добраться до вашей текущей ситуации, чтобы я мог воспроизвести их для изучения проблемы?   -  person ikegami    schedule 20.02.2020
comment
Спасибо ikegami, добавил правку в конец   -  person Ian    schedule 20.02.2020
comment
Я думаю, нужны ли mod_perl потоки или нет, зависит от модели MPM, используемой для Apache.   -  person ikegami    schedule 20.02.2020
comment
Не могли бы вы проверить конфигурацию apache на наличие директивы модуля LoadModule для модуля с именем, начинающимся с mpm, пожалуйста?   -  person ikegami    schedule 20.02.2020
comment
Я не вижу ни одного модуля, я вижу только закомментированную строку #Include conf/extra/httpd-mpm.conf   -  person Ian    schedule 20.02.2020
comment
grep mpm /etc/apache2/mods-enabled/*, может быть?   -  person ikegami    schedule 20.02.2020
comment
Помогает ли передача --with-mpm=prefork configure Apache?   -  person ikegami    schedule 20.02.2020
comment
Извините, все так же. Я также не могу найти какие-либо моды с поддержкой модов. Спасибо за помощь... Я заметил, что есть пара комментариев о -Uusethreads, -Dusethreads, -Duseithreads... просто интересно для моего здравомыслия, есть ли какие-либо документы по различиям?   -  person Ian    schedule 20.02.2020
comment
Я вижу комментарий в mod_perl Makefile.PL, в котором говорится, что MP_NO_THREADS=1 может быть опцией, которую, я думаю, можно как-то передать ему... для версий выше http2.4, поэтому я думаю, что мне может понадобиться использовать более старую версию или рисунок, где что var/param проверяется   -  person Ian    schedule 20.02.2020
comment
ага, это может быть Perl Makefile.PL MP_NO_THREADS=1   -  person Ian    schedule 20.02.2020
comment
Чтобы построить Perl без потоков, укажите -Uusethreads или -Dusethreads=undef в сценарии Configure.   -  person mob    schedule 20.02.2020
comment
В чем разница между -U и -D в параметрах компиляции?   -  person Ian    schedule 20.02.2020
comment
-D: определить, -U: отменить определение   -  person mob    schedule 20.02.2020
comment
@mob, 1) Или вообще ничего не указывать, так как это по умолчанию. 2) ОП уже создает Perl без потоков. Проблема в том, что mod_perl требовал потокового perl.   -  person ikegami    schedule 21.02.2020


Ответы (1)


Ответ, который я думаю, заключается в том, чтобы скомпилировать mod_perl с опцией ..

perl Makefile.PL MP_NO_THREADS=1

Если кто-то хочет дать более полный ответ о том, не так ли желательно делать это сейчас (или любую другую информацию), поскольку в Apache 2.4, похоже, есть некоторые изменения, я с радостью приму их ответ.

person Ian    schedule 20.02.2020