2013-02-26 201 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的