경고하다

경고하다

최근 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.

또한 스크립트는 appx perl 바이너리 경로( )를 매핑할 configure필요가 없으며 자동으로 시스템 전체 perl을 기본값으로 선택합니다.ARG/usr/local/appx/perl/bin/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를 사용하지 않더라도 걱정할 필요가 없습니다. 그렇다면 심볼릭 링크하고 다시 빌드하는 대신 복사해야 합니다. 이를 위해서는 존재하거나 존재하지 않을 수도 있는 소스 코드가 필요합니다.

관련 정보