警告する

警告する

最近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を使用しなくても心配する必要はありません。その場合は、シンボリックリンクして再構築する代わりにコピーする必要があります。これには、存在するか存在しない可能性があるソースコードが必要です。

おすすめ記事