CPAN

CPAN
CPAN 로고

종합 Perl 아카이브 네트워크(CPAN)는 250,000개가 넘는 소프트웨어 모듈 및 39,000개의 배포용 매뉴얼로 구성된 저장소이며 12,000개 이상의 [1]기여자가 Perl 프로그래밍 언어로 작성했습니다.CPAN은 네트워크에 대한 인터페이스 및 자동화된 소프트웨어 설치(패키지 매니저 등)로서 기능하는 아카이브 네트워크 또는 Perl 프로그램을 나타낼 수 있습니다.CPAN 상의 대부분의 소프트웨어는 무료 오픈소스 소프트웨어입니다.[2]

역사

CPAN은 1993년에 구상되어 1995년 [3]10월부터 온라인상에서 활동하고 있습니다.이것은 CTAN 모델을 기반으로 하며 분산된 Perl [4]아카이브의 구조를 통합하기 위한 장소로 시작되었습니다.

역할.

많은 프로그래밍 언어처럼 펄은 외부 코드 라이브러리를 사용하는 메커니즘을 가지고 있으며, 하나의 파일에 여러 프로그램에서 사용되는 공통 루틴이 포함되어 있습니다.Perl은 이러한 모듈을 호출합니다.Perl 모듈은 보통 Perl 인터프리터를 처음 컴파일할 때 경로가 Perl 인터프리터에 배치되는 여러 디렉토리 하나에 설치됩니다.유닉스 유사 운영체제에서는 공통 경로에는 /usr/lib/perl5, /usr/local/lib/perl5 및 여러 하위 디렉토리가 포함됩니다.

Perl에는 작은 코어 모듈 세트가 포함되어 있습니다.이 중 일부는 ExtUtils와 같은 부트스트랩 작업을 수행합니다.MakeMaker -[5] 다른 확장 모듈을 빌드 및 설치하기 위한 Make파일을 만드는 데 사용됩니다.다른 확장 모듈에는 다음과 같습니다.:[6] Util은 단지 일반적으로 사용됩니다.

CPAN의 주요 목적은 프로그래머가 Perl 표준 배포에 포함되지 않은 모듈과 프로그램을 찾을 수 있도록 돕는 것입니다.그 구조는 분산되어 있다.작성자는 자신의 모듈을 유지하고 개선합니다.포킹 및 동일한 작업 또는 목적을 위한 경쟁 모듈의 작성은 일반적입니다.업로드된 배포에 대해 자동으로 설정되는 서드파티 버그 추적 시스템이 있지만 작성자는 GitHub과 같은 다른 버그 추적 시스템을 사용할 수도 있습니다.마찬가지로, GitHub는 배포 소스를 저장하는 인기 있는 위치이지만, 저자가 원하는 곳에 저장되거나 공개적으로 접근할 수 없을 수 있습니다.유지관리자는 자신의 모듈을 유지 또는 인수할 권한을 다른 사람에게 부여할 수 있으며, 관리자는 폐기된 모듈을 인수할 권한을 부여할 수 있습니다.업데이트된 배포의 이전 버전은 업로더에 의해 삭제될 때까지 CPAN 및 Back이라는 보조 미러 네트워크에 유지됩니다.PAN은 CPAN에서 [7]삭제된 경우에도 분포를 유지합니다.또한 CPAN과 모든 모듈의 전체 이력을 GitPAN [8]프로젝트로 이용할 수 있어 모든 모듈의 전체 이력을 쉽게 볼 수 있고 포크의 유지보수가 용이합니다.CPAN은 Parrow나 Raku와 같은 관련 프로젝트뿐만 아니라 새로운 버전의 Perl을 배포하는 데도 사용됩니다.

구조.

CPAN 상의 파일은 배포라고 불립니다.배포는 gzip tar 아카이브나 ZIP 파일 등 공통 아카이브 형식으로 패키지된1개 이상의 모듈, 문서 파일 또는 프로그램으로 구성됩니다.배포에는 대부분의 경우 설치 스크립트(보통 Makefile이라고 함)가 포함됩니다.PL 또는 빌드.PL) 및 배포 내용을 확인하기 위해 실행할 수 있는 테스트스크립트가 정상적으로 기능하고 있습니다.새로운 배포가 Perl Authors Upload Server(PAUSE)에 업로드됩니다(「Upload distributions with PAUSE」섹션 참조).

2003년에 배포에는 배포 이름, 버전, 종속성 및 기타 유용한 정보를 나타내는 META.yml이라고 하는 메타데이터 파일이 포함되기 시작했습니다.그러나 모든 배포에 메타데이터가 포함되어 있는 것은 아닙니다.메타데이터가 배포에 존재하지 않는 경우 PAUSE 소프트웨어는 배포 내의 코드를 분석하여 동일한 정보를 검색하려고 합니다.이것은 반드시 신뢰성이 높은 것은 아닙니다.2010년에는 이 사양의 버전2가 META.json이라는 새로운 파일을 통해 사용되도록 작성되었으며[9], 하위 호환성을 위해 YAML 형식 파일도 종종 포함되어 있습니다.

수천 개의 분포를 사용하는 경우 CPAN을 유용하게 구성해야 합니다.작성자는 대부분의 경우 모듈을 Perl 모듈 이름의 자연스러운 계층에 배치합니다(예:Apache::DBI또는Lingua::EN::Inflect목적 또는 도메인에 따라 다르지만 이는 강제되지 않습니다.

CPAN 모듈 배포는 보통 CGI-Application-3.1 형식의 이름을 가집니다(여기서 모듈 이름에 사용되는 ::는 대시로 대체되고 버전 번호는 이름에 추가됨). 그러나 이는 규칙일 뿐입니다.많은 중요한 배포, 특히 여러 모듈을 포함하는 배포는 규칙을 위반합니다.보안 제한으로 인해 배포가 동일한 파일 이름으로 대체되지 않으므로 사실상 모든 배포 이름에는 버전 번호가 포함됩니다.

구성 요소들

CPAN의 유통 인프라는 60개 [10]이상의 국가에서 250개 이상의 미러로 구성된 전세계 네트워크로 구성되어 있습니다.각 풀 미러에는 약 31기가바이트[11]데이터가 저장됩니다.

대부분의 미러는 CPAN 마스터 사이트에서 [12]매시간, 매일 또는 쌍방향으로 업데이트됩니다.일부 사이트는 다른 많은 소프트웨어를 미러링하는 주요 FTP 서버이지만 다른 사이트는 Perl을 많이 사용하는 회사가 소유한 서버입니다.남극 대륙을 제외한 모든 대륙에는 적어도 두 개의 거울이 있다.

Perl 프로그래머가 CPAN을 통해 정렬할 수 있도록 여러 검색 엔진이 작성되었습니다.공식 search.cpan.org에는 텍스트 검색, 모듈 검색 색인 및 현재 CPAN에 있는 모든 배포의 추출된 복사본이 포함되어 있습니다.2018년 5월 16일 Perl Foundation은 코드베이스 노후화와 유지보수 부담으로 인해 search.cpan.org가 2018년 6월 29일(운영 19년 후) 종료될 것이라고 발표했습니다.사용자는 이행되어 서드파티 대체 MetaCPAN으로 [13][14]리다이렉트 됩니다.

CPAN 테스터는 CPAN에 업로드될 때 배포를 다운로드하고 테스트하는 자원봉사자 그룹입니다.이를 통해 저자가 접근하기 어려운 많은 플랫폼 및 환경에서 모듈을 테스트할 수 있으므로 휴대성과 품질을 향상시킬 수 있습니다.스모크 테스터는 보고서를 전송하고, 보고서를 취합하여 주요 보고서 사이트, 통계 및 종속성을 포함한 다양한 프레젠테이션 웹 사이트에 사용합니다.

작성자는 Perl Authors Upload Server(PAUSE)를 통해 새로운 배포를 CPAN에 업로드할 수 있습니다.그러기 위해서는 PAUSE 계정을 요청해야 합니다.

등록되면 웹 인터페이스(pause.perl.org) 또는 FTP 인터페이스를 사용하여 파일을 디렉토리에 업로드하고 삭제할 수 있습니다.업로드 내의 모듈은 모듈명이 이전에 사용되지 않았거나(업로더에 선착순 권한을 부여), 업로더가 해당 이름에 대한 권한을 가지고 있고 모듈이 기존 [15]엔트리보다 상위 버전인 경우에만 표준으로 인덱싱됩니다.이것은, PAUSE 의 Web 인터페이스를 개입시켜 지정할 수 있습니다.

CPAN.pm, CPANPLUS 및 cpanminus

CPAN이라는 이름의 Perl 코어 모듈도 있습니다.보통 CPAN.pm이라는 이름을 사용하여 저장소 자체와 구별됩니다.CPAN.pm은 주로 배포 검색, 다운로드 및 설치에 사용할 수 있는 대화형 셸입니다.인터랙티브 셸은cpan은 Perl 코어에서도 제공되며 CPAN.pm을 실행하는 일반적인 방법입니다.간단한 구성 프로세스와 미러 선택 후 사용자 컴퓨터에서 사용할 수 있는 도구를 사용하여 모듈을 자동으로 다운로드, 언팩, 컴파일, 테스트 및 설치합니다.또, 그 자체를 갱신할 수도 있습니다.

CPAN.pm을 보다 깨끗하고 현대적인 것으로 대체하기 위해 CPANPLUS(또는 CPAN++) 모듈 세트가 만들어졌습니다.CPANPLUS는 모듈을 다운로드, 컴파일 및 설치하는 백엔드 작업을 명령어 발행에 사용되는 인터랙티브셸에서 분리합니다.또한 암호화 서명 확인 및 테스트 결과 보고와 같은 몇 가지 고급 기능도 지원합니다.마지막으로 CPANPLUS는 배포를 제거할 수 있습니다.CPANPLUS는 버전 5.10.0에서 Perl 코어에 추가되어 버전 5.20.0에서 삭제되었습니다.

이러한 CPAN 인스톨러에 대한 보다 작고 슬림한 최신 대체품이 cpanminus로 개발되었습니다.cpanminus는 제한된 메모리 환경에서 필요한 메모리 용량을 대폭 줄이고 스탠드아론 스크립트로 사용할 수 있도록 설계되어 있어 설치 자체로도 사용할 수 있으며 예상되는 코어 Perl 모듈 세트만 사용할 수 있습니다.cpanm 스크립트를 설치하는 App::cpanminus 모듈로도 CPAN에서 사용할 수 있습니다.영구 구성을 유지하거나 사용하지 않고 환경 및 명령줄 옵션에 의해서만 구성됩니다. cpanminus에는 대화형 셸 구성 요소가 없습니다.이는 전제조건을 지정하기 위한 cpanfile 형식을 인식하며 CPAN 설치용으로 설계되지 않은 애드혹 Perl 프로젝트에서 유용합니다.cpanminus에는 배포를 제거하는 기능도 있습니다.

각 모듈은 배포의 종속성을 확인하고 자동으로 또는 개별 사용자의 승인을 받아 필수 구성 요소를 재귀적으로 설치할 수 있습니다.각각 FTP 및 HTTP를 지원하며 방화벽 및 프록시를 통해 작동할 수 있습니다.

영향을 주다

경험 많은 Perl 프로그래머들은 Perl의 전력의 절반이 CPAN에 있다고 종종 언급합니다.그것은 Perl의 킬러 [16]앱으로 불리고 있다.PHP의 경우 PECL PEAR, Python경우 PyPI(Python Package Index) 저장소, R경우 RubyGems, Node.js의 경우 CRAN, Lua의 경우 npm, Java의 경우 Maven, Hackage for Haskell과 거의 동일합니다.CPAN은 조정된 이름 공간, 테스트 체제 및 잘 정의된 문서 스타일을 사용하여 독특하게 만듭니다.

Perl 개발자 커뮤니티에서 CPAN은 Perl의 문화를 형성하고 그에 따라 형성됩니다.2002년 4월 1일, 「자칭 사서」라고 하는 「자칭 사서」가 만우절 농담에 자주 참가합니다.이 사이트는 일시적으로 「JAVA」의 약자인 「CJAN」으로 명명되었습니다.2003년에www.cpan.org도메인 이름은 펄 커뮤니티에서 악명 높은 사이트인 Matt's Script Archive로 수정되었습니다.[17][18][19]

CPAN의 일부 분포는 농담으로 배포됩니다.Acme::계층은 joke 모듈용으로 예약되어 있습니다.예를 들어,Acme::Don't를 추가합니다.don't주어진 코드를 실행하지 않는 함수(보완하기 위해)do내장되어 있습니다).외부에서도Acme::계층 구조, 몇몇 모듈들은 여전히 주로 재미를 위해 쓰여진다; 하나의 예는Lingua::Romana::Perligata이것은 라틴어 서브셋으로 Perl 프로그램을 쓰는 데 사용할 수 있습니다.

2005년, JavaScript에 관심을 가진 Perl 개발자 그룹이 모여 JavaScript Archive Network라고 하는 JSAN을 만들었습니다.JSAN은 JavaScript 언어로 사용하기 위한 CPAN 인프라스트럭처의 거의 직접 포트입니다.JSAN의 수명 대부분은 "커뮤니티"가 응집되어 있지 않습니다.

2008년 오픈 소스 개발자 회의에서 CPAN 관리자 Adam Kennedy와 우연히 만난 후 Linux 커널 개발자인 Rusty Russell은 CCAN인 Comprehensive C Archive Network를 만들었습니다.CCAN은 C 언어에서 사용하기 위한 CPAN 아키텍처의 직접 포트입니다.

CRAN(종합 R 아카이브 네트워크)은 R 프로그래밍 언어 배포, 문서 및 기여 [20]확장을 호스팅하는 미러 세트입니다.

레퍼런스

  1. ^ "CPAN front page". Retrieved 27 January 2016.
  2. ^ "How are Perl and the CPAN modules licensed?". Most, though not all, modules on CPAN are licensed under the GNU General Public License (GPL) or the Artistic license...
  3. ^ "The Timeline of Perl and its Culture".
  4. ^ "Grokking the CPAN" (PDF). I propose that we cooperate to create a unified structure, much like the CTAN project which has managed to create a collection of canonical sites for TeX
  5. ^ "ExtUtils::MakeMaker - Create a module Makefile - Perldoc Browser". perldoc.perl.org. Retrieved 18 November 2020.
  6. ^ "List::Util - A selection of general-utility list subroutines - Perldoc Browser". perldoc.perl.org. Retrieved 18 November 2020.
  7. ^ "BackPAN". Retrieved 20 December 2019.
  8. ^ "What is Gitpan?". GitHub. 2 December 2015. Retrieved 16 November 2016.
  9. ^ "CPAN::Meta::History". Retrieved 20 December 2019.
  10. ^ "CPAN Mirror Network". Retrieved 16 November 2016.
  11. ^ "How to mirror CPAN". CPAN.org. Retrieved 15 November 2016.
  12. ^ "CPAN Status and Statistics". Retrieved 9 May 2010.
  13. ^ "The end of an era: Saying goodbye to search.cpan.org". log.perl.org. Retrieved 22 May 2018.
  14. ^ "Saying goodbye to search.cpan.org". perl.com. Retrieved 26 June 2018.
  15. ^ "PAUSE Operating Model". GitHub. Retrieved 20 December 2019.
  16. ^ "Re: Killer Apps in PERL". Retrieved 24 February 2013.
  17. ^ "Elements of Programming with Perl". 12 October 2000. Retrieved 25 April 2013.
  18. ^ "Exploit this formmail.pl for fun and, well, fun". 7 August 2001. Retrieved 25 April 2013.
  19. ^ "Matt's Script Archive Strikes Again!". 4 July 2001. Retrieved 25 April 2013.
  20. ^ "What is CRAN?". Retrieved 20 December 2019.

외부 링크