2013-02-26 285 views
2

我已经安装了perl-5.8.9,mod_perl-2.0.7,Embperl-2.3.0和httpd-2.2.22。且在启动Apache时,得到类似下面的错误(拆分为多个行的可读性):加载mod_perl.so时出错

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

有时可能是许可问题。你可以尝试用提升权限的用户启动服务器(例如,如果你使用admin用户来安装mod_perl,请尝试使用该用户)。 – 2013-02-27 11:07:26

+0

我已经作为超级用户(root)安装了mod_perl,并且我试图以超级用户身份启动服务器。这个问题可能不是一个权限问题。我已经多次搜索这个问题,我没有得到任何正确的答案。 – Futuregeek 2013-02-27 12:07:59

回答

2

[问题的输出可以有效移动到的Unix &的Linux SE]

您似乎已经安装不太兼容包,一个或多个软件包未正确安装,安装说明缺少一个步骤,动态链接器默认值不太正确。 (不出意外)perl的一部分。在许多平台上,普通的perl默认版本将只创建静态库,但也可以创建动态库libperl.so。有些人赞成.so的方法,虽然它可能有一些性能开销。

你的问题的最可能的原因是:

  1. perl是静态的,但mod_perl建针对动态 Perl,以libperl.so
  2. 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的