警告

警告

我最近安裝了 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,那麼您不必擔心。如果是這樣,您應該複製它,而不是對其進行符號連結並重建;為此,您需要原始程式碼,該原始程式碼可能存在,也可能不存在:(

相關內容