我安装了perl-5.8.9,mod_perl-2.0.7,Embperl-2.3.0和httpd-2.2.22。在启动apache时,我得到如下错误(为了便于阅读,分为多行):
httpd: Syntax error on line * of ../conf/httpd.conf:
Cannot load ../Apache2/mod_perl.so into server:
libperl.so: cannot open shared object file:
No such file or directory
通过ldd ../Apache2/mod_perl.so
,我得到了像
linux-gate.so.1 => (0x00735000)
libperl.so => not found
libnsl.so.1 => /lib/libnsl.so.1 (0x005e5000)
libdl.so.2 => /lib/libdl.so.2 (0x00fab000)
libm.so.6 => /lib/libm.so.6 (0x0041f000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x0084d000)
libutil.so.1 => /lib/libutil.so.1 (0x00110000)
libc.so.6 => /lib/libc.so.6 (0x00197000)
/lib/ld-linux.so.2 (0x00163000)
答案 0 :(得分:3)
[这个问题可以有效地转移到 Unix& Linux SE。]
您似乎安装了不太兼容的软件包,或一个或多个软件包未正确安装,或安装说明缺少步骤或动态链接器默认值不太正确。
libperl
(不出所料)是perl
的一部分。在许多平台上,普通的perl默认构建只会创建libperl.a
静态库,但也可以创建动态库libperl.so
。有些人赞成使用.so
方法,但可能会有一些性能开销。
问题的最可能原因是:
perl
是静态的,mod_perl
是针对带有libperl.so
的动态 perl构建的perl
软件包安装libperl.so
某处动态链接器看起来不是原因#1意味着找到不同的兼容软件包(或者可能是组合软件包)。
如果它是#2,您应该能够找到libperl.so
(某个地方,如/usr/local/lib/perl5/5.8.9/mach/CORE/
),或者只运行ldd /usr/local/bin/perl
(安装新perl
二进制文件的地方)看它是否知道它在哪里。
在您尝试下面建议的任何更改之前,只需以root用户身份运行ldconfig
,然后重试,以便修复它。
如果在新的perl安装目录下找到libperl.so
,则可以将该文件复制到Apache lib/
子目录,因为应该构建Apache(RPATH
选项)以添加该目录到库搜索路径。如果您在/usr/local/lib
下找到它,则应修改默认链接器配置(/etc/ld.so.conf
)以添加该目录,并刷新(ldconfig
)。
您的平台显然是Linux,但您没有说明软件包的类型和来源,或者它是否是源代码构建,所以我不能更精确......
我有点怀疑某些东西没有正确安装,因为Apache模块的常规位置在modules/
子目录内,而不是直接在 ServerRoot 中。