cpm - a fast CPAN module installer

4211 단어 Perl
이 문서는 Perl 5 Advent Calendar 2016의 9 일째입니다.

어제는 nqounet씨에 의한 「지연 실행과 임시 실행 (dry_run)에 대해 생각해 보았습니다.」이었습니다.

오늘은 내가 개발하고 있는 CPAN 모듈 인스톨러 cpm 를 소개하고 싶습니다.

cpm이란?



CPAN 모듈 인스톨러라고 하면, cpanm 가 세계적으로 유명하고 많은 분이 사용하고 있다고 생각합니다.

나 자신도 cpanm을 정말 잘 사용하고 있습니다만, 대량의 의존이 있는 어플리케이션을 개발하고 있을 때 등 cpanm이라면 CPAN모듈 인스톨에 상당한 시간이 걸리고, 좀 더 빨리 되지 않을까 생각하고 있었습니다.

그래서 cpm을 만들었습니다. cpm은 내부에서 cpanm을 병렬로 사용하여 CPAN 모듈 설치를 빠르게 수행합니다.



글쎄요, 속도를 찾아서 만든 cpm이지만 최근 몇 가지 다른 기능도 추가했기 때문에
오늘은 그 소개하고 싶습니다.

darkpan과의 협력



darkpan은 CPAN의 전부 또는 일부의 미러를 의미합니다. OrePAN2 , CPAN::Mini 등을 사용하면 비교적 간단하게 만들 수 있습니다.

이 darkpan의 모듈 설치에 cpm이 지원됩니다.

예를 들어/opt/darkpan에 darkpan이 있을 때
> cpm install --resolver 02packages,/opt/darkpan Your::Module

그렇다면/opt/darkpan에서 Your::Module을 설치합니다.

이 방법을 사용하면/opt/darkpan에서 Your::Module을 설치하려고합니다. 만약/opt/darkpan은 일부의 미러이기 때문에 존재하지 않는 모듈은 MetaDB에 fallback하여 찾고 싶다면,
> cpm install --resolver 02package,/opt/darkpan --resolver metadb Your::Module

하십시오.

종속 모듈을 git에서 설치



위 darkpan을 사용하면 사내 전용 모듈도 관리 할 수 ​​있습니다. 단지 모듈을 github로 관리하는 경우, 거기에서 직접 설치할 수 있다면 더욱 유용 할 수 있습니다.

그런 경우에는
requires "Your::WebApp", git => "git://github.com/you/Your-WebApp.git", ref => "develop";
requires "Plack", ">= 1.000, < 2.000";

라는 cpanfile을 준비하고
> cpm install

그렇다면 github에서 직접 설치할 수 있습니다.

덧붙여 이 기능은 capnm/Carton에도 일시적이었습니다만, 현재는 삭제되고 있습니다. 다른 toolchain과의 제휴를 생각할 때, 이 「CPAN 이외의 디스트리뷰션 보존 장소」를 어떻게 취급해 나갈까는, 논의가 있습니다.

resolver가 유연



이제 위의 두 가지 특징으로 대표되는 바와 같이, cpm은 resolver = "모듈 이름에서 배포 저장 위치를 ​​가져오기"가 유연하게 만들어졌습니다.
사실, 그들은 App::cpm::Resolver::*의 네임 스페이스 아래에 묶여 있으며,
쉽게 변경할 수 있습니다.

앞으로 이를 사용자가 쉽게 변경할 수 있는 인터페이스를 준비하고 싶습니다.

미래



이상 cpm의 특징에 대해 설명해 왔습니다.

이제 이미 몇 가지 CPAN 모듈 설치 프로그램이 존재할 때 cpm의 존재 의미는 무엇입니까?

앞서 언급했듯이 cpanm은 안정적인 CPAN 모듈 설치 프로그램으로 전세계에서 사용되고 있습니다. 따라서 대폭적인 내부 변경, 신규 기능의 추가에는 조금 신중하게 할 수밖에 없습니다.
그래서 cpm입니다. 즉, cpm을 sandbox로 파악하고 어떤 기능이 유용하고 어떤 기능이 의미가 없는지 파악하고 싶습니다.

사실, 아직 시도하고 싶은 것 많이 있습니다. 만약 여러분 안에 CPAN 모듈 인스톨러에 불만을 가지고 있는 분, 새로운 기능의 제안을 가지고 있는 분이 있으면, 꼭 논의하고 싶다고 생각합니다.

그런데 내일은 ytnobody씨로 Azure + Perl로 서버리스 작업 시스템 만들기 입니다!

좋은 웹페이지 즐겨찾기