Linux
Perl 依賴問題
我最近安裝了 CentOS 6.3 (i386)。
它有兩個 perl 二進製文件
/usr/bin/perl (v5.10.1) /usr/local/appx/perl/bin/perl (v5.8.8)
我的問題:是否可以使用該 appx 中的系統範圍的 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 作為預設值。
Perl 5 次要版本向後兼容,因此 5.8.8 模組應該與 5.10.1 perl 一起使用(但有一個例外,請參閱下面的 CAVEAT)。包含路徑 (
@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,那麼您不必擔心。如果是這樣,您應該複製它而不是符號連結並重建它;為此,您需要源,它可能存在也可能不存在:(