2012-01-26 2 views
3

나는 모든 서버에 Perl 5.8을 설치했으며 DBI 및 DBD :: Oracle 모듈을 사용하여 데이터베이스에 액세스하려고했습니다. 필자의 주요 관심사는 새로운 버전의 perl에서 DBI 및 DBD 모듈이 5.8에서 작동을 멈출 것이라는 점입니다. 그렇다면 모든 서버를 최신 Perl 버전으로 업그레이드해야합니다.모든 펄 버전은 이전 모듈을 지원합니까?

제 질문은 펄 자체가 최신 버전이되어 모듈이 개발 되었기 때문에 여전히 하위 호환성이 있습니까? DBI의 최신 버전이 5.8에서 작동하지 않는다면 "cpan -i DBI"라는 문서를 작성하면 "CPAN은 Perl의 모든 고대 릴리스와 패치 레벨을 포함하지 않습니다"

+0

Perl 5.8은 현행 펄 5 안정판의 세 가지 주요 버전입니다. 최소한 사내 소프트웨어를 업그레이드하는 것이 좋습니다. Perlbrew를 사용하여 시스템 perl을 방해하지 않고 더 최신 perl을 설치할 수 있습니다 (배포판에서 제공하는 시스템 도구에 따라 다를 수 있음). – Quentin

+0

"CPAN은 최신 버전의 모듈 만 지원합니다"- 사실이 아닙니다. CPAN 서버에서 계속 호스팅되는 모듈의 이전 버전을 다운로드 할 수 있습니다 (이전 버전을 제거하는 데 특별한 노력이 필요함) 분산되어 있으므로 많은 작성자가 신경 쓸 필요가 없습니다.) 배포판이 특정 perl 버전에 대한 지원을 제공하지 않는 경우 모듈 작성자에게 CPAN에서 이전 버전을 유지하도록 요청하여 기존 사용자를 지원할 수 있습니다. – Ether

+0

다음 기사도 사용할 수 있습니다. [Perl 5 지원 정책 시각화] (http://www.dagolden.com/index.php/1605/visualizing-the-perl-5-support-policy/) – Ether

답변

7

보장은 없습니다.

일반적으로 모든 시스템에서 동일한 버전의 모듈을 사용하려고합니다. 다른 버전을 사용하면 다른 서버에서 사용할 수있는 버그와 기능이 달라집니다.

나는 당신이 사용하려고하는 것들에 대해 Debs/RPMS/etc를 생성하고 모든 서버가 공유하는 패키지 저장소를 실행할 것을 제안합니다.

+0

그래, 나는 같은 버전을 설치하는 것을보고있는 유일한 방법에 동의하지만 그것을하기 위해 CPAN의 미러를 만드는 것에 대해 이야기하고 있었다. 서버 중 일부는 Windows 시스템이므로 패키지를 만드는 대신 CPAN 유형 설치를하고 싶습니다. – LF4

4

일반적으로, 최근 출시 된 Perl ( 스마트 일치 연산자 // 연산자 2 개 한 예)에는 하위 호환성이없는 여러 가지 새로운 기능이 새로 추가되었습니다. 많은 저자는 모듈을 Perl의 이전 버전과 호환되도록 유지하기보다는 이러한 기능을 이용하기로 결정할 것입니다.

모든 배포판 테스트를 통과 한 the max version에 대한 링크를 포함하여 모듈의 CPAN Tester's Matrix을 확인하여 각 버전의 Perl과 호환 가능한 버전을 확인하십시오.

cpan -i Some::Module 약간의 연구를 통해 Some::Module 모듈의 최신 버전을 실제로 설치하려고 시도하지만 이전 버전을 설치하는 데에도 사용할 수 있습니다. 이전 버전의 작성자를 찾거나 추측하고 CPAN 미러 서버에서 배포 경로를 제공해야합니다. 예를 들어

cpan -i J/JF/JFRIEDL/Yahoo-Search-1.9.12.tar.gz 

cpan -i A/AS/ASG/List-Gen-0.80.tar.gz 

CPAN 작성자는 CPAN에서 이전 배포판을 삭제할 수 있습니다. 그러나 배포본을 다운로드하고 압축을 풀고 직접 만들려면 BackPAN에서 배포 할 수 있습니다.

4

절대적으로는 아니지만 일반적으로 perl은 코드를 깨고, 많은 변경 사항이 발생하지 않으며, 오랜 시간 사용하지 않는주기가 발생하는 경우에 대해 매우 친절합니다. 1999 년 CPAN에 업로드 된 꽤 많은 코드가 perl 5.14에서 수정없이 실행됩니다.

perl 릴리스주기가 짧아지고 사용 중단 기간이 짧아 져 우려가되지만 동시에 기능 버전 관리 개념이 통용되었습니다. 코드는 대상 코드의 버전을 use VERSION (예 : use 5.16.0)으로 선언 할 수 있으며 버전을 선언하지 않은 코드는 약 5.10을 타겟팅한다고 가정합니다. 이전 버전의 Perl을 대상으로하는 코드가 최신 버전에서 실행되면 호환성 문제 (예 : 새 키워드)가 발생할 수있는 최신 기능이 사용 중지되고 호환성 문제로 오래된 기능이 다시 활성화 될 수 있습니다. 이것은 절대적인 보증은 아니지만 실용적으로 준수해야합니다.

역 호환성 및 지원 중단에 대한 자세한 내용은 perlpolicy입니다.