2011-07-26 2 views
0

하나의 CPAN 종속성이있는 Perl 응용 프로그램을 배포하고 싶습니다. 누군가가 응용 프로그램을 시작할 때이 종속성에 대한 검사를 포함시킬 수 있습니까? 커맨드 라인 인자 또는 내부 펄을 직접 통용합니까?Perl 응용 프로그램에 CPAN 종속성을 포함시키는 방법은 무엇입니까?

+0

http://tackoverflow.com/questions/1094125/try-to-use-module-in-perl-and-print-message-if-module-not-available –

답변

3

다른 의존성이없는 순수한 Perl 모듈입니까?

나는 내 코드와 함께 패키지화했다. 흠, 원하는 경우 파일에 파일을 추가 할 수도 있습니다.

좀 더 복잡하다면, 즉 설치해야하는 모듈이 12 개 있고, 필요한 컴파일이 있다면 CPAN을 사용하여 다운로드해야합니다. CPAN::AutoINC은 모듈이 필요하고 @INC 경로가 아닌 경우 CPAN에서 필요한 모듈을 다운로드하고 설치한다고 가정합니다.

그러나 제 경험으로는 엉망인 '벌레'로 끝납니다. 사용자는 프로그램을 실행하기 시작할 수 있습니다. 1 분 동 안 실행하면 실제로 시간이 없을 때 필수 모듈을 다운로드, 컴파일 및 테스트하는 데 20 분을 소비하고 있음을 알 수 있습니다.

실패하면 무엇이 필요한지 잘 설명하는 것이 좋습니다. 사용자는 cpan을 루트로 실행하여 시스템의 모든 사용자가 사용할 수 있습니다. 또는 시스템 관리자에게 요청할 수도 있습니다.

나는 이런 식으로 뭔가 할 수있는 발견했습니다

our $missingModuleFlag; 

BEGIN { 
    eval { require My::Mod; }; 
    our $missingModuleFlag = [email protected] if ([email protected]); 
} 

[...] 

our $missingModuleFlag; #Package Variable -- Value is from above 
if ($missingModuleFlag) { 
    die <<EOM; 
ERROR: You are missing module "My::Mod" which is required for 
    this program. Please use "cpan" to download this module 
    and install it on this server. If you have no idea what 
    I am talking about, see http://www.cpan.org/modules/INSTALL.html. 
    If that doesn't make any sense to you, then ask a system administrator. 
EOM 
} 

그것은 문제이며, 무엇을 할 필요가 있고 중 하나를 설치 강행에 사용자에게 선택권을 제공합니다, 또는에 대해 설명을 그것을 위해 다른 사람에게 물어보십시오.

5

question에서 논의 된 여러 가지 방법 외에도 필수 모듈을 코드와 함께 번들링하는 것이 좋습니다. PAR, PAR::Packer 및 기타 옵션을 여러 개 열 수 있습니다.

관련 문제