답변:
GNU ELPA 는 공식 GNU Emacs 패키지 저장소입니다. 기본적으로 유일하게 활성화 된 것이므로 도달 범위가 가장 큽니다. 동시에 패키지를 제출하면 약간의 번거 로움이 있으며 FSF 저작권 할당이 필요합니다. 즉, 패키지 선택이 상대적으로 제한적입니다.
MELPA 및 Marmalade 는 모두 타사 패키지 저장소입니다. GNU에서 공식적으로 지원하지는 않지만 훨씬 더 많은 패키지를 선택할 수 있습니다. 패키지 품질은 조금 더 가변적이지만, 특히 조금 불분명 한 경우 원하는 것을 찾을 가능성이 훨씬 높습니다.
Marmalade와 MELPA는 패키지 업 로더를 위해 약간 다른 모델을 가지고 있습니다. MELPA는 버전 제어 저장소를 직접 (예 : GitHub를 통해) 추적하므로 패키지 작성자가 커밋을 분기로 푸시하여 패키지를 업데이트 할 수 있습니다. 반면 마멀레이드는 사람들이 패키지를 저장소에 명시 적으로 업로드하도록합니다.
실제로, 나는 MELPA와 Marmalade의 큰 차이를 보지 못했습니다. 둘 다 설치 가능한 패키지를 선택할 수있는 가장 큰 단점은 없습니다. 나는 큰 문제없이 당분간 (그리고 물론 GNU ELPA)을 사용해 왔습니다.
두 저장소가 활성화되어 있고 나 자신에게 달려 있지 않은 한 가지 가능한 우려 (내 자신에게 달려 가지 않은)는 서로 다른 버전에서 패키지를 사용할 수 있다는 것입니다. 기본적으로 패키지 관리자 ( package.el
)에는 이와 같은 충돌을 해결할 수있는 방법이 없습니다. 그러나 melpa
어떤 패키지가 어떤 저장소에서 제공되거나 제외되는지 사용자 정의 할 수 있는 패키지를 설치하여이 문제를 해결할 수 있습니다. 자세한 내용은 여기 또는 melpa
패키지 설명서를 참조 하십시오 .
@Malabarba가 유용하게 지적했듯이이 문제는 Emacs 24.4에서 해결되었습니다.
보안이 정말 걱정된다면 MELPA와 Marmalade를 사용하여 패키지를 업로드하고 사전에 보안 조치를 취하지 않아도되므로 피해야합니다. 반면에 GNU ELPA 리포지토리는 FSF가 관리하며 도움이 될 패키지에 서명했습니다. 물론 보안이 정말로 중요한 경우 패키지 관리자를 사용하는 대신 elisp 패키지를 직접 검토하고 설치하는 것이 좋습니다.
내가 생각하는 방식에 따라 일부 저장소는 다른 패키지보다 패키지 제출과 관련된 오버 헤드가 더 많습니다. 더 많은 오버 헤드를 가진 저장소는 더 적은 패키지를 갖는 경향이 있습니다. 대부분의 오버 헤드부터 최소한의 오버 헤드까지 :
개인적으로 MELPA Stable 또는 Marmalade는 아마도 대부분의 사용자에게 장기적으로 이길 것이라고 생각합니다. MELPA는 매우 불안정하고 ELPA는 너무 제한적이어서 많은 패키지에 실제로 확장 할 수 없습니다. 그러나 그것은 단지 의견 일뿐입니다.
사용 가능한 여러 패키지 리포지토리가 있습니다.
공무원
GNU ELPA 는 공식 패키지 저장소입니다. 크기가 작으며 FSF에 기여하려면 패키지의 모든 저자에게 저작권을 할당해야합니다.
GNU ELPA의 패키지는 실제로 git repo 입니다. 여기서 호스팅되는 이점은 Emacs 자체가 기능을 추가하거나 사용하지 않을 경우 핵심 팀이 패키지를 업데이트하려고한다는 것입니다.
소스에서 빌드
MELPA 는 가장 크고 가장 빠르게 성장하는 패키지 저장소입니다. 새 버전이 리포지토리로 푸시되거나 EmacsWiki 페이지가 업데이트 될 때마다 새 버전이 릴리스됩니다.
최첨단이지만 실제로는 잘 작동합니다. MELPA는 중복 패키지를 피하고 패키지의 표준 홈 (임의의 포크 대신)이 기록되도록하기 위해 선별되었습니다.
MELPA는 버전이 단지 타임 스탬프라는 문제가 있습니다 (예 :) my-package-20131231.2359
. 이것은 내 패키지에 의존하는 경우를 의미합니다.
;; Package-Requires: ((my-package "1.2.3"))
그러면 Emacs는 MELPA의 모든 버전이 충분히 새롭다 고 생각할 것입니다.
MELPA Stable 은 MELPA 와 동일하지만 날짜 스탬프 버전을 사용하는 대신 git 태그의 버전을 사용합니다. 이것은 더 나은 종속성 해결을 허용하지만 위키 패키지에 따라 문제가 있습니다 .
사용자 업로드
마멀레이드 는 다른 프로그래밍 언어의 전통적인 저장소와 훨씬 비슷합니다. 패키지 개발자는 릴리스를 수행 할 때 패키지를 Marmalade에 업로드합니다.
원칙적으로 이것은 패키지에 적절한 릴리스 프로세스를 제공하고 (Marmalade는 MELPA보다 안정적입니다) 자동 생성 된 버전 번호 문제를 피합니다. 그러나 신원 확인은 없습니다. 패키지를 작성하지 않아도 누구나 업로드 할 수 있습니다. 관리자 my-package
가 다른 사람이 업로드 my-package
하여 새 버전을 업로드 할 수 없다는 것을 알게 되면 어려움을 겪습니다 .
Marmalade는 이전에는 node.js 앱이었으며 이제 elisp로 작성되었습니다. 두 버전 모두 가동 시간 문제가 가끔있었습니다.
프로젝트 별
조직 모드 ELPA 는 org
및 호스트 만있는 리포지토리 입니다 org-plus-contrib
. 조직 모드는 Emacs 핵심의 일부이지만 외부에서 개발되었으며 코드는 주기적으로 Emacs 트렁크와 만 동기화됩니다. 이 리포지토리를 사용하면 최첨단 조직 모드를 사용할 수 있습니다.
User42 ELPA 는 광범위한 Emacs 패키지를 출시 한 단일 패키지 개발자를위한 저장소입니다 . 그의 패키지가 마음에 들면이 리포지토리를 추가 할 수 있습니다.
Sunrise Commander ELPA 는 Sunrise Commander (자정 사령관으로부터 영감을받은 파일 탐색을위한 Emacs 패키지)의 확장을위한 저장소입니다 .
은퇴
Tromey의 ELPA 는 첫 번째 리포지토리 입니다. 공식적으로 GNU ELPA로 대체되었지만 동일한 저작권 할당 요구 사항이 없었습니다. 2010 년 현재 더 이상 업데이트되지 않습니다.
Elpy 패키지 아카이브 에는 Jorgen Schaefer가 'Emacs Python Development Environment'Elpy를 위해 개발 한 다양한 패키지가 포함되어 있지만 MELPA Stable로 마이그레이션되었습니다.
no one has mentioned the risks involved in using github, a commercial provider of web based software, as a backend
:하지만 그 문제는 지금이 있다고 사라집니다 확신 마이크로 소프트 GitHub의이 ;-)
여기에 다른 답변을 보충하는 추가 정보가 있습니다.
MELPA 및 MELPA "안정한"에 대한 정보-
질문 자체에 대한 주석을 포함하여 StackOverflow에서 매우 많은 중복 질문 을 살펴보십시오 . 특히,이 의견은 Donald Curtis (MELPA 및 MELPA의 관리자)와 이메일을 교환 한 후 게시 한 의견입니다.
그의 관점에서 [도날드 커티스 (Donald Curtis)], 그리고 저와 의 의사 소통을 이해하면서 "안정된"MELPA 사이트는 유지 관리 모드에만 있습니다. 내 코드와 같은 코드가없는 유일한 이유 는 "안정된"사이트에 대한 위키 [Emacs Wiki] 에서 아무도 업로드를 구현하지 않았기 때문입니다 . 또한 패키지가 안정적이고 위험한지 여부를 판단하기 위해 필터링을하지 않는 사람도 "큐팅"을 수행 할 수 없습니다. 패키지의 개발 버전을 이전 버전과 구별하려는 일부 패키지 개발자는 두 사이트의 존재를 요청했습니다 ( "안정적" ") 버전.
요약하면, "MELPA 안정"의 내용에 대해 본질적으로 더 "안정적인"것은 없습니다 . 버전 번호 및 피드 방법이 다를 수 있습니다. 그게 다야. 그리고 특정 패키지 관리자가 "안정된"버전과 "개발"버전을 구별하고이를 두 개의 다른 사이트에 업로드하여이를 수행하려는 경우 해당 패키지에 영향 을줍니다 .
MELPA와 Marmalade (및 GNU ELPA)의 한 가지 차이점은 MELPA에 기여한 코드가 git 저장소에서 제공 될 필요가 없다는 것입니다. 특히, Emacs Wiki 의 Elisp Area 에서 자동으로 가져올 수 있습니다 .
일부 사람들이 말했듯이 누구나 업로드 할 수 있으며 실제로 주장하는 저자의 코드인지 여부를 알 수있는 방법이 없습니까? 예, 아니오 일반적으로 그렇습니다. 누구나 Elisp 코드를 Emacs Wiki에 무료로 업로드 할 수 있습니다. Elisp-Area 페이지 상단에 다음과 같이 표시됩니다.
이것은 EmacsLisp 파일을 수집하는 EmacsWiki elisp 영역입니다. 로그인 필요, 버전 관리 필요 없음, ftp 필요 없음, 암호 필요 없음 위키 자체만큼이나 간단합니다. 또한 누구나 EmacsLisp 파일에 악성 코드를 배치 할 수 있습니다. 의심스러운 경우 사용하지 마십시오.
그러나 아시다시피, 저는 Wiki의 관리자이며 Wiki Elisp Area의 Lisp 라이브러리는 잠긴 페이지입니다. 즉, 위키 관리자 만 업로드 할 수 있습니다. 따라서이 경우 MELPA 또는 Emacs Wiki에서 다운로드 한 내 라이브러리가 저에 의해 업로드되었음을 확신 할 수 있습니다. 그러나 인터넷상의 모든 것과 마찬가지로 코드 자체에 대한 보장이없는 것처럼 철저한 보증은 없습니다. 모든 GPL 라이브러리의 GPL 블 러브는 다음과 같이 말합니다.
이 프로그램은 유용 할 것이라는 희망으로 배포되었지만 어떠한 보증도하지 않습니다. 상품성 또는 특정 목적에의 적합성에 대한 묵시적 보증조차 포함하지 않습니다. 자세한 내용은 GNU General Public License를 참조하십시오.
HTH. 행복한 해킹.