最近CentOS 6.3(i386)をインストールしました。
2つの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
。
また、スクリプトはappx perlバイナリパス()をマップするconfigure
必要はなく、自動的にシステム全体のperlをデフォルトとして選択します。ARG
/usr/local/appx/perl/bin/perl
ベストアンサー1
Perlの第5部バージョンは以前のバージョンと互換性があるため、5.8.8モジュールは5.10.1 Perlで使用する必要があります(例外は1つですが、以下の警告を参照)。インクルードパス(@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を使用しなくても心配する必要はありません。その場合は、シンボリックリンクして再構築する代わりにコピーする必要があります。これには、存在するか存在しない可能性があるソースコードが必要です。