我最近安裝了 CentOS 6.3 (i386)。
它有兩個 perl 二進位文件
/usr/bin/perl (v5.10.1)
/usr/local/appx/perl/bin/perl (v5.8.8)
我的問題:是否可以使用該應用程式中的系統範圍 perl 和 perl 模組來安裝一些其他功能到該應用程式?
就像下面這樣:
./configue -prefix=/usrl/local/app_xyz -perl_lib_path=/usr/local/appx/perl/lib/5.8.8/
我已經嘗試了上面的方法,但出現以下錯誤:
RRD Perl Module -----------------**Not Found**
但該 perl 模組RRDs.pm
在該目錄下可用/usr/local/appx/lib/5.8.8
。
此外,該configure
腳本不必ARG
對應我們的 appx perl 二進位路徑 ( /usr/local/appx/perl/bin/perl
),它會自動選擇系統範圍的 perl 作為預設值。
答案1
Perl 5 次要版本是向後相容的,因此 5.8.8 模組應該與 5.10.1 perl 一起使用(但有一個例外,請參閱下面的警告)。包含路徑 ( @INC
) 在建構 perl 時配置,但@INC
可以由單獨的程式修改,並且全域環境變數 $PERL5LIB 的內容被加到前面。
export PERL5LIB=/usr/local/appx/lib/5.8.8
然而,這種方法有一個問題。 因為 $PERL5LIB 是前置的,這樣@INC
做會導致加載各種標準模組時優先使用 5.8.8 目錄。這是不可取的。
因此,一種不太整潔但最終更好的想法是僅將符號連結/usr/local/appx/lib/5.8.8/RRD.pm
(和/或 RRD 目錄,如果有)到/usr/local/lib/perl5
或其他一些標準@INC
目錄。您可以看到那些:
perl -e 'print "$_\n" foreach @INC'
請注意,可能同時存在頂級 RRD.pm 和並行 RRD 目錄;如果是這樣,你想對兩者進行符號連結。
警告
某些 Perl 模組包含從 C 編譯的部分,這些部分可能會損壞。如果 RRD.pm 不使用 C,那麼您不必擔心。如果是這樣,您應該複製它,而不是對其進行符號連結並重建;為此,您需要原始程式碼,該原始程式碼可能存在,也可能不存在:(