CPAN
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
CPAN(Comprehensive Perl Archive Network)은 1993년에 구상되어 1995년 10월부터 운영된 펄(Perl) 모듈 및 프로그램의 분산된 아카이브이다. 펄 프로그래머들이 외부 라이브러리 코드를 쉽게 찾고 사용할 수 있도록 돕는 역할을 하며, 모듈, 문서 파일, 프로그램 등을 배포하는 '배포판' 구조를 갖는다. CPAN은 전 세계 미러 네트워크를 통해 운영되며, 검색 엔진, CPAN 테스터, CPANRatings 등의 지원 웹사이트를 제공한다. CPAN 셸을 통해 모듈을 검색, 다운로드, 설치할 수 있으며, CPANPLUS, cpanminus와 같은 대안도 존재한다. CPAN은 펄 커뮤니티에 중요한 영향을 미치며, 다른 프로그래밍 언어의 패키지 관리 시스템과 유사한 역할을 수행한다.
더 읽어볼만한 페이지
- 펄 - 래리 월
래리 월은 펄 프로그래밍 언어 창시자이자 rn, patch 개발자이며, 유니시스 근무 중 펄을 개발하고 《프로그래밍 펄》을 저술하는 등 펄 커뮤니티에 큰 영향을 미쳤고, 자유 소프트웨어 발전상 수상 및 펄 프로젝트의 자비로운 종신 독재자로 활동 중인 컴퓨터 과학자이자 기독교 신자이다. - 펄 - 펄 쿡북
펄 쿡북은 펄 프로그래밍에 대한 실용적인 해법을 요리책 형식으로 제시하는 참고서로, 1998년과 2003년에 각각 1판과 2판이 출판되어 다양한 평가에서 찬사를 받았다. - 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 브루클린 미술관
브루클린 미술관은 1823년 브루클린 견습생 도서관으로 시작하여 현재 약 50만 점의 소장품을 보유한 뉴욕 브루클린 소재의 미술관으로, 다양한 분야의 예술 작품을 전시하며 특히 아프리카 미술과 여성주의 미술에 대한 기여가 크다. - 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 광주지방기상청
광주지방기상청은 광주광역시와 전라남도 지역의 기상 예보, 특보, 관측, 기후 정보 제공 등의 업무를 수행하는 기상청 소속 기관으로, 1949년 광주측후소로 설치되어 1992년 광주지방기상청으로 개편되었으며, 기획운영과, 예보과, 관측과, 기후서비스과와 전주기상지청, 목포기상대를 두고 있다.
| CPAN |
|---|
2. 역사
CPAN은 1993년에 구상되었으며 1995년 10월부터 온라인에서 활동해왔다.[3] CTAN을 모델로 하여, 분산된 펄 아카이브의 구조를 통합하는 장소로 시작되었다.[4]
많은 프로그래밍 언어와 마찬가지로, 펄(Perl)은 외부 라이브러리 코드를 사용하여 여러 프로그램에서 사용되는 공통 루틴을 하나의 파일에 담을 수 있는 메커니즘을 가지고 있다. 펄에서는 이를 ''모듈''이라고 부른다. 펄 모듈은 일반적으로 펄 인터프리터가 처음 컴파일될 때 경로가 지정되는 여러 디렉토리 중 하나에 설치된다. 유닉스 계열 운영 체제에서는 ''/usr/lib/perl5'', ''/usr/local/lib/perl5'' 및 여러 하위 디렉토리가 일반적인 경로에 해당한다.[3]
CPAN의 파일은 '배포판'이라고 불린다. 배포판은 gzip 압축된 tar 아카이브 또는 ZIP 파일과 같은 일반적인 아카이브 형식으로 패키지된 하나 이상의 모듈, 문서 파일 또는 프로그램으로 구성될 수 있다. 배포판은 종종 배포판의 내용이 제대로 작동하는지 확인하기 위해 실행할 수 있는 설치 스크립트(일반적으로 ''Makefile.PL'' 또는 ''Build.PL''이라고 함)와 테스트 스크립트를 포함한다.
CPAN은 60개국 이상에 250개 이상의 미러 서버로 구성된 전 세계적인 네트워크를 가지고 있다.[10] 각 전체 미러는 약 36 기가바이트의 데이터를 호스팅하며,[11] 대부분의 미러는 CPAN 마스터 사이트에서 시간별, 일별 또는 격일로 업데이트된다.[12] 남극 대륙을 제외한 모든 대륙에 최소 두 개의 미러가 존재한다.
3. 역할
펄에는 소수의 ''코어 모듈''이 함께 제공된다. 이러한 모듈 중 일부는 다른 확장 모듈을 빌드하고 설치하기 위한 Makefile을 만드는 데 사용되는 ExtUtils::MakeMaker[5]와 같은 부트스트래핑 작업을 수행하며, 다른 모듈(예: List::Util[6])은 단순히 일반적으로 사용된다.
CPAN의 주요 목적은 프로그래머가 펄 표준 배포판에 포함되지 않은 모듈과 프로그램을 찾는 것을 돕는 것이다. CPAN의 구조는 분산되어 있으며, 작성자는 자신의 모듈을 유지 관리하고 개선한다. 동일한 작업이나 목적을 위해 포크를 생성하고 경쟁 모듈을 만드는 것이 일반적이다. 업로드된 모든 배포판에 대해 자동으로 설정되는 타사 버그 추적 시스템이 있지만, 작성자는 GitHub와 같은 다른 버그 추적 시스템을 사용할 수 있다. 마찬가지로, GitHub는 배포판의 소스를 저장하는 데 널리 사용되는 곳이지만, 작성자가 선호하는 모든 위치에 저장될 수 있으며, 아예 공개적으로 액세스할 수 없을 수도 있다. 유지 관리자는 다른 사람에게 모듈을 유지 관리하거나 인계할 권한을 부여할 수 있으며, 관리자는 버려진 모듈을 인계받고자 하는 사람에게 권한을 부여할 수 있다. 업데이트된 배포판의 이전 버전은 업로더가 삭제할 때까지 CPAN에 보존되며, BackPAN이라는 보조 미러 네트워크는 CPAN에서 삭제된 경우에도 배포판을 보존한다.[7] 또한, CPAN과 모든 모듈의 전체 기록은 GitPAN 프로젝트[8]로 제공되어 모든 모듈의 전체 기록을 쉽게 확인하고 포크를 쉽게 유지 관리할 수 있다. CPAN은 패럿 및 라쿠와 같은 관련 프로젝트뿐만 아니라 펄의 새 버전도 배포하는 데 사용된다.
4. 구조
2003년부터 배포판에는 배포판 이름, 버전, 종속성 및 기타 유용한 정보를 나타내는 ''META.yml''이라는 메타데이터 파일이 포함되기 시작했다. 그러나 모든 배포판에 메타데이터가 포함되어 있는 것은 아니다. 배포판에 메타데이터가 없으면 PAUSE의 소프트웨어는 배포판의 코드를 분석하여 동일한 정보를 찾으려고 시도한다. 이는 반드시 매우 신뢰할 수 있는 것은 아니다. 2010년에는 이 사양의 버전 2가 ''META.json''이라는 새로운 파일을 통해 사용하도록 생성되었으며, YAML 형식 파일은 하위 호환성을 위해 종종 포함되기도 한다.
수천 개의 배포판이 있기 때문에 CPAN은 유용하도록 구성되어야 한다. 저자는 목적이나 도메인에 따라 Perl 모듈 이름의 자연스러운 계층 구조(예: `Apache::DBI` 또는 `Lingua::EN::Inflect`)에 모듈을 배치하는 경우가 많지만, 이는 강제 사항은 아니다.
CPAN 모듈 배포판은 일반적으로 ''CGI-Application-3.1'' 형식의 이름을 갖는다(모듈 이름에 사용된 '''::'''는 대시로 대체되고 버전 번호가 이름에 추가됨). 하지만 이는 단지 관례일 뿐이며, 특히 여러 모듈을 포함하는 많은 주요 배포판은 이 관례를 따르지 않는다. 보안 제한으로 인해 배포판을 동일한 파일 이름으로 대체하는 것은 불가능하므로 사실상 모든 배포판 이름에는 버전 번호가 포함되어 있다.
5. 구성 요소
작성자는 'Perl Authors Upload Server'(PAUSE)를 통해 CPAN에 새 배포판을 업로드할 수 있다. PAUSE 계정을 요청하여 등록한 후, FTP 인터페이스를 사용하여 파일을 자신의 디렉토리에 업로드하고 삭제할 수 있다.[15]
5. 1. 검색 엔진
여러 검색 엔진이 CPAN을 통해 펄 프로그래머들이 원하는 자료를 찾도록 돕는다. 공식 검색 엔진은 search.cpan.org였으나, 2018년 6월 29일부로 운영이 중단되었고, MetaCPAN으로 리디렉션된다.[13][14]
기타 CPAN 검색 엔진은 다음과 같다.5. 2. 테스터 (CPAN Testers)
CPAN 테스터는 CPAN에 업로드된 배포판을 다운로드하여 테스트하는 자원 봉사자 그룹이다. 이를 통해 작성자는 모듈을 다른 방법으로는 접근할 수 없는 많은 플랫폼과 환경에서 테스트하여 이식성과 품질을 향상시킬 수 있다. 테스터들은 보고서를 보내고, 보고서는 취합되어 주요 보고서 사이트, 통계, 종속성을 포함한 다양한 프레젠테이션 웹사이트에 사용된다.[13]
5. 3. 기타 지원 웹사이트
다음은 개인 펄 개발자가 만들어 관리하고 있는 CPAN 관련 웹사이트들이다.
6. PAUSE로 배포판 업로드
PAUSE(Perl Authors Upload Server)는 펄 작성자가 CPAN에 새 배포판을 업로드하는 데 사용하는 서버이다. PAUSE 계정을 요청하여 등록해야 한다.
등록 후 https://pause.perl.org pause.perl.org의 웹 인터페이스 또는 FTP 인터페이스를 사용하여 파일을 자신의 디렉토리에 업로드하고 삭제할 수 있다. 업로드된 모듈은 다음 조건을 만족해야 정식으로 색인된다.[15]
| 조건 |
|---|
| 모듈 이름이 이전에 사용되지 않았거나(업로더에게 선착순 권한 부여) |
| 업로더가 해당 이름에 대한 권한을 가지고 있음 |
| 모듈이 기존 항목보다 높은 버전인 경우 |
이는 PAUSE의 웹 인터페이스를 통해 지정할 수 있다.
7. CPAN 셸
CPAN.pm은 CPAN 저장소와 상호 작용하는 펄 코어 모듈이다. `cpan` 명령어를 통해 대화형 셸을 실행하여 배포판 검색, 다운로드, 설치 등을 수행할 수 있다.
```bash
cpan
```
모듈 설치 시 권한 문제로 인해 `sudo cpan`과 같이 관리자 권한으로 사용하는 것이 필요할 수 있다.
```bash
sudo cpan
```
처음 사용 시 설정이 필요하며, `o conf 옵션 변경값` 형태로 설정을 변경하고, `o conf commit`으로 변경사항을 저장할 수 있다. `o conf`를 입력하면 옵션 목록을 확인할 수 있다.
권한이 없는 계정에서는 모듈을 표준 설치 디렉토리에 넣을 수 없는 경우가 있다. 이때는 설치 위치를 변경해야 하는데, `local::lib` 모듈을 사용하여 미리 설치 위치를 지정하는 것이 일반적이다.
7. 1. CPANPLUS & cpanminus
CPANPLUS영어 (CPAN++)는 CPAN.pm의 개선된 버전으로, 모듈 설치 과정을 보다 세분화하고 다양한 기능을 제공한다. 암호화 서명 확인, 테스트 결과 보고, 배포판 제거와 같은 고급 기능을 지원한다. CPANPLUS영어는 펄 버전 5.10.0에 추가되었다가 버전 5.20.0에서 제거되었다.[1]cpanminus는 더 작고 가벼운 대안으로, 제한된 메모리 환경에서 유용하며, 자체 설치도 가능한 독립 실행형 스크립트로 사용 가능하다. 또한 App::cpanminus 모듈로 CPAN에서 사용할 수 있으며, `cpanm` 스크립트를 설치한다. 영구적인 구성을 유지하거나 의존하지 않고, 환경 및 명령줄 옵션에 의해서만 구성된다. cpanminus는 대화형 셸 구성 요소가 없으며, cpanfile 형식을 인식한다. 배포판을 제거하는 기능도 가지고 있다.[1]
8. 영향
CPAN은 펄의 킬러 앱이라고 불릴 정도로 펄 생태계에서 중요한 위치를 차지한다.[16] 이는 PHP의 Composer, 파이썬의 PyPI (Python 패키지 인덱스) 저장소, 루비의 RubyGems, R의 CRAN, Node.js의 npm, 루아의 LuaRocks, 자바의 Maven, Haskell의 Hackage와 대략적으로 동등하다. CPAN은 중재된 네임스페이스, 테스팅 방식, 잘 정의된 문서 스타일을 통해 독특한 특징을 가진다.
CPAN은 펄의 문화를 형성하고, 동시에 펄 커뮤니티 문화를 통해 형성된다. "자칭 마스터 사서"인 Jarkko Hietaniemi는 종종 만우절 농담에 참여한다. 2002년 4월 1일에는 사이트 이름이 일시적으로 ''CJAN''으로 변경되었는데, 여기서 "J"는 "자바(Java)"를 의미했다. 2003년에는 `www.cpan.org` 도메인 이름이 펄 커뮤니티에서 코드가 형편없이 작성된 것으로 악명 높은 사이트인 Matt's Script Archive로 리디렉션되었다.[17][18][19]
CPAN의 일부 배포판은 농담으로 배포된다. `Acme::` 계층은 농담 모듈을 위해 예약되어 있다. 예를 들어, `Acme::Don't`는 주어진 코드를 실행하지 않는 `don't` 함수를 추가한다 (실행하는 내장 함수 `do`를 보완하기 위해). `Acme::` 계층 외에도, 일부 모듈은 여전히 주로 재미를 위해 작성된다. 그 예로, 라틴어의 하위 집합으로 펄 프로그램을 작성하는 데 사용할 수 있는 `Lingua::Romana::Perligata`가 있다.
2005년, 자바스크립트에 관심이 있는 펄 개발자 그룹은 JavaScript 아카이브 네트워크인 JSAN을 만들었다. JSAN은 대부분의 기간 동안 응집력 있는 "커뮤니티"가 없었던 자바스크립트 언어에 사용하기 위해 CPAN 인프라를 거의 직접 이식한 것이다.
2008년, 오픈 소스 개발자 컨퍼런스에서 CPAN 관리자 애덤 케네디와 우연히 만난 후, 리눅스 커널 개발자 Rusty Russell은 종합 C 아카이브 네트워크인 CCAN을 만들었다. CCAN은 C 언어에 사용하기 위해 CPAN 아키텍처를 직접 이식한 것이다.
종합 R 아카이브 네트워크인 CRAN은 R 언어 배포판, 문서 및 기여 확장 기능을 호스팅하는 미러 세트이다.[20]
참조
[1]
웹사이트
CPAN front page
http://www.cpan.org/
2016-01-27
[2]
웹사이트
How are Perl and the CPAN modules licensed?
http://www.cpan.org/[...]
[3]
웹사이트
The Timeline of Perl and its Culture
http://history.perl.[...]
[4]
웹사이트
Grokking the CPAN
http://www.cpan.org/[...]
[5]
웹사이트
ExtUtils::MakeMaker - Create a module Makefile - Perldoc Browser
https://perldoc.perl[...]
2020-11-18
[6]
웹사이트
List::Util - A selection of general-utility list subroutines - Perldoc Browser
https://perldoc.perl[...]
2020-11-18
[7]
웹사이트
BackPAN
http://backpan.cpant[...]
2019-12-20
[8]
웹사이트
What is Gitpan?
https://github.com/e[...]
2015-12-02
[9]
웹사이트
CPAN::Meta::History
https://metacpan.org[...]
2019-12-20
[10]
웹사이트
CPAN Mirror Network
http://www.cpan.org/[...]
2016-11-16
[11]
웹사이트
How to mirror CPAN
http://www.cpan.org/[...]
CPAN.org
2024-08-22
[12]
웹사이트
CPAN Status and Statistics
http://www.cs.uu.nl/[...]
2010-05-09
[13]
웹사이트
The end of an era: Saying goodbye to search.cpan.org
https://log.perl.org[...]
2018-05-22
[14]
웹사이트
Saying goodbye to search.cpan.org
https://www.perl.com[...]
2018-06-26
[15]
웹사이트
PAUSE Operating Model
https://github.com/a[...]
2019-12-20
[16]
웹사이트
Re: Killer Apps in PERL
http://www.perlmonks[...]
2013-02-24
[17]
웹사이트
Elements of Programming with Perl
http://www.perlmonks[...]
2000-10-12
[18]
웹사이트
Exploit this formmail.pl for fun and, well, fun
http://www.perlmonks[...]
2001-08-07
[19]
웹사이트
Matt's Script Archive Strikes Again!
http://www.perlmonks[...]
2001-07-04
[20]
웹사이트
What is CRAN?
https://cran.r-proje[...]
2019-12-20
[21]
뉴스
The Timeline of Perl and its Culture
https://history.perl[...]
[22]
웹인용
CPAN front page
http://www.cpan.org/
2012-10-09
[23]
웹인용
CPAN Mirror
http://mirrors.cpan.[...]
2009-05-15
[24]
웹인용
How are Perl and the CPAN modules licensed?
http://www.cpan.org/[...]
[25]
웹인용
CPAN Status and Statistics
http://www.cs.uu.nl/[...]
2010-05-09
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com