| kleptos ( @ 2007-03-13 06:43:00 |
| Entry tags: | apache, perl, soft, threads, tip |
apache2 и треднутый пёрл
Решил я значитсо собрать пёрл с поддержкой тредов.
И чтоб mod_perl при этом работал.
А дистриб - gentoo.
Апач - Apache/2.0.58.
Пёрл - v5.8.8
mod_perl-2.0.2
Добавляю threads к use флагам апача, ithreads к пёрлу, пересобираю апач, пёрл и mod_perl.
На первый взгляд ничего не предвещает беды:
kleptos@localhost ~ $ /usr/sbin/apache2 -V
Server version: Apache/2.0.58
Server built: Mar 13 2007 01:15:04
Server’s Module Magic Number: 20020903:12
Server loaded: APR 0.9.12, APR-UTIL 0.9.12
Compiled using: APR 0.9.12, APR-UTIL 0.9.12
Architecture: 32-bit
Server compiled with....
-D APACHE_MPM_DIR=“server/mpm/worker”
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D HTTPD_ROOT=“/usr”
-D SUEXEC_BIN=“/usr/sbin/suexec2”
-D DEFAULT_SCOREBOARD=“logs/apache_runtime_status”
-D DEFAULT_ERRORLOG=“logs/error_log”
-D AP_TYPES_CONFIG_FILE=“/etc/apache2/mime.types”
-D SERVER_CONFIG_FILE=“/etc/apache2/httpd.conf”
kleptos@localhost ~ $ perl -V | grep ithreads
usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
Но, при старте апача такая картина
localhost downloads # /etc/init.d/apache2 start * Apache2 has detected a syntax error in your configuration files: Syntax error on line 3 of /etc/apache2/modules.d/75_mod_perl.conf: Cannot load /usr/lib/apache2/modules/mod_perl.so into server: /usr/lib/apache2/modules/mod_perl.so: undefined symbol: Perl_Ipatchlevel_ptr
Уже было собрался писать в
kleptos@localhost ~ $ ldd /usr/lib/apache2/modules/mod_perl.so linux-gate.so.1 => (0xb7f2c000) libperl.so.1 => /usr/lib/libperl.so.1 (0xb7da0000) libpthread.so.0 => /lib/libpthread.so.0 (0xb7d89000) libnsl.so.1 => /lib/libnsl.so.1 (0xb7d70000) libdl.so.2 => /lib/libdl.so.2 (0xb7d6c000) libm.so.6 => /lib/libm.so.6 (0xb7d44000) libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7d15000) libutil.so.1 => /lib/libutil.so.1 (0xb7d11000) libc.so.6 => /lib/libc.so.6 (0xb7bc7000) /lib/ld-linux.so.2 (0x80000000)
Тут я вспомнил, что libperl это вообще-то отдельный компонент и неплохо-бы ему тоже добавить флагов и пересобать.
Добавляю, пересобираю, старную апач - поднимается.
кладу в ~/public_html тестовый скрипт - отдается plaintext, иду править конфиг:
kleptos@localhost ~ $ vim vim: symbol lookup error: vim: undefined symbol: PL_markstack_ptr
теперь осталось