Linux

Perl 依賴問題

  • April 29, 2013

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

引用自:https://unix.stackexchange.com/questions/74041