다양한 Emacs 패키지 저장소의 실제 차이점은 무엇입니까?


124

종종 동일한 소프트웨어를 포함하는 여러 저장소가 있음을 알았습니다. 왜 내가 선호하고 싶습니까?

  • GNU ELPA
  • 마멀레이드
  • 멜파

다른 사람들보다? 하나의 리포지토리에 원하는 패키지가 모두 포함되어 있지 않으므로 이러한 리포지토리를 동시에 활성화하는 것이 좋습니다.

답변:


82

GNU ELPA 는 공식 GNU Emacs 패키지 저장소입니다. 기본적으로 유일하게 활성화 된 것이므로 도달 범위가 가장 큽니다. 동시에 패키지를 제출하면 약간의 번거 로움이 있으며 FSF 저작권 할당이 필요합니다. 즉, 패키지 선택이 상대적으로 제한적입니다.

MELPAMarmalade 는 모두 타사 패키지 저장소입니다. GNU에서 공식적으로 지원하지는 않지만 훨씬 더 많은 패키지를 선택할 수 있습니다. 패키지 품질은 조금 더 가변적이지만, 특히 조금 불분명 한 경우 원하는 것을 찾을 가능성이 훨씬 높습니다.

Marmalade와 MELPA는 패키지 업 로더를 위해 약간 다른 모델을 가지고 있습니다. MELPA는 버전 제어 저장소를 직접 (예 : GitHub를 통해) 추적하므로 패키지 작성자가 커밋을 분기로 푸시하여 패키지를 업데이트 할 수 있습니다. 반면 마멀레이드는 사람들이 패키지를 저장소에 명시 적으로 업로드하도록합니다.

실제로, 나는 MELPA와 Marmalade의 큰 차이를 보지 못했습니다. 둘 다 설치 가능한 패키지를 선택할 수있는 가장 큰 단점은 없습니다. 나는 큰 문제없이 당분간 (그리고 물론 GNU ELPA)을 사용해 왔습니다.

두 저장소가 활성화되어 있고 나 자신에게 달려 있지 않은 한 가지 가능한 우려 (내 자신에게 달려 가지 않은)는 서로 다른 버전에서 패키지를 사용할 수 있다는 것입니다. 기본적으로 패키지 관리자 ( package.el)에는 이와 같은 충돌을 해결할 수있는 방법이 없습니다. 그러나 melpa어떤 패키지가 어떤 저장소에서 제공되거나 제외되는지 사용자 정의 할 수 있는 패키지를 설치하여이 문제를 해결할 수 있습니다. 자세한 내용은 여기 또는 melpa패키지 설명서를 참조 하십시오 .

@Malabarba가 유용하게 지적했듯이이 문제는 Emacs 24.4에서 해결되었습니다.

보안이 정말 걱정된다면 MELPA와 Marmalade를 사용하여 패키지를 업로드하고 사전에 보안 조치를 취하지 않아도되므로 피해야합니다. 반면에 GNU ELPA 리포지토리는 FSF가 관리하며 도움이 될 패키지에 서명했습니다. 물론 보안이 정말로 중요한 경우 패키지 관리자를 사용하는 대신 elisp 패키지를 직접 검토하고 설치하는 것이 좋습니다.


13
emacs 24.4에 포함 된 새로운 package.el은 다양한 버전 번호를 우아하게 처리합니다. 두 개의 repos가 다른 버전의 동일한 패키지를 가진 경우 둘 다 제공되며 하나는 업데이트 중에 다른 하나를 대체하지 않습니다.
Malabarba

1
@ 말라 바바 :와, 잘 듣습니다!
Tikhon Jelvis

14
이것은 좋은 대답이지만 MELPA 안정 ( melpa-stable.milkbox.net ) 도 언급해야합니다 . MELPA는 자동으로 repo의 마스터 브랜치에서 최신 개정을 받고 MELPA 스 테이블은 최신 태그 개정을받습니다.
shosti

@ shosti : 오 깔끔한, 나는 그것에 대해 몰랐다. 실제로 자체 답변으로 넣는 것이 좋습니다.
Tikhon Jelvis

7
마멀레이드는 누구도 패키지를 업로드 할 수 없습니다. 등록 된 사용자 만. 지금 모든 업 로더를 알고 있습니다. 따라서 일종의 동료 검토가 있습니다.
nic ferrier

44

내가 생각하는 방식에 따라 일부 저장소는 다른 패키지보다 패키지 제출과 관련된 오버 헤드가 더 많습니다. 더 많은 오버 헤드를 가진 저장소는 더 적은 패키지를 갖는 경향이 있습니다. 대부분의 오버 헤드부터 최소한의 오버 헤드까지 :

  1. GNU ELPA 는 모든 코드가 GPL이며 FSF에 저작권이 할당되어 있어야합니다. ELPA 코드는 본질적으로 핵심 Emacs 팀이 "소유"하므로 다른 repos보다 훨씬 적습니다. (org-mode에는 자체 저장소가 있지만 동일한 작동 모드가 있습니다.)
  2. Marmalade 는 모든 코드에 GPL 호환 라이센스가 있어야하며 모든 패키지는 수동으로 업로드됩니다. 소유권은 지정되지 않았으며 소유권 변경에는 정해진 프로세스 AFAIK가 없습니다.
  3. MELPA Stable 은 라이센스 제한이 없으며 최신 태그 수정을 사용하여 git repos에서 패키지를 자동으로 빌드한다는 점을 제외하면 Marmalade와 직접 경쟁 관계에 있습니다. 소유권은 MELPA 저장소를 통해 결정됩니다 (소유권 변경은 풀 요청을 통해 발생 함).
  4. MELPAMELPA 와 비슷하지만 항상 git repo의 마스터 브랜치에서 최신 개정판을 가져옵니다. 패키지는 "최첨단"경향이 있으며, 안정성면에서 자유롭고 자유 롭습니다 (장단점이 있음).

개인적으로 MELPA Stable 또는 Marmalade는 아마도 대부분의 사용자에게 장기적으로 이길 것이라고 생각합니다. MELPA는 매우 불안정하고 ELPA는 너무 제한적이어서 많은 패키지에 실제로 확장 할 수 없습니다. 그러나 그것은 단지 의견 일뿐입니다.


6
marmalade는 이제 패키지에 소유자를 추가하기위한 API를 가지고 있습니다.
nic ferrier

31

사용 가능한 여러 패키지 리포지토리가 있습니다.

공무원

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 StableMELPA 와 동일하지만 날짜 스탬프 버전을 사용하는 대신 git 태그의 버전을 사용합니다. 이것은 더 나은 종속성 해결을 허용하지만 위키 패키지에 따라 문제가 있습니다 .

사용자 업로드

마멀레이드 는 다른 프로그래밍 언어의 전통적인 저장소와 훨씬 비슷합니다. 패키지 개발자는 릴리스를 수행 할 때 패키지를 Marmalade에 업로드합니다.

원칙적으로 이것은 패키지에 적절한 릴리스 프로세스를 제공하고 (Marmalade는 MELPA보다 안정적입니다) 자동 생성 된 버전 번호 문제를 피합니다. 그러나 신원 확인은 없습니다. 패키지를 작성하지 않아도 누구나 업로드 할 수 있습니다. 관리자 my-package가 다른 사람이 업로드 my-package하여 새 버전을 업로드 할 수 없다는 것을 알게 되면 어려움을 겪습니다 .

Marmalade는 이전에는 node.js 앱이었으며 이제 elisp로 작성되었습니다. 두 버전 모두 가동 시간 문제가 가끔있었습니다.

프로젝트 별

조직 모드 ELPAorg및 호스트 만있는 리포지토리 입니다 org-plus-contrib. 조직 모드는 Emacs 핵심의 일부이지만 외부에서 개발되었으며 코드는 주기적으로 Emacs 트렁크와 만 동기화됩니다. 이 리포지토리를 사용하면 최첨단 조직 모드를 사용할 수 있습니다.

User42 ELPA광범위한 Emacs 패키지를 출시 한 단일 패키지 개발자를위한 저장소입니다 . 그의 패키지가 마음에 들면이 리포지토리를 추가 할 수 있습니다.

Sunrise Commander ELPASunrise Commander (자정 사령관으로부터 영감을받은 파일 탐색을위한 Emacs 패키지)의 확장을위한 저장소입니다 .

은퇴

Tromey의 ELPA 는 첫 번째 리포지토리 입니다. 공식적으로 GNU ELPA로 대체되었지만 동일한 저작권 할당 요구 사항이 없었습니다. 2010 년 현재 더 이상 업데이트되지 않습니다.

Elpy 패키지 아카이브 에는 Jorgen Schaefer가 'Emacs Python Development Environment'Elpy를 위해 개발 한 다양한 패키지가 포함되어 있지만 MELPA Stable로 마이그레이션되었습니다.


4
마멀레이드는 확실히 가동 시간 문제가 있습니다 ... nic.ferrier.me.uk/blog/2014_08/deploying-blue-green-with-docker로 문제를 해결했다고 생각합니다 .github 사용과 관련된 위험에 대해서는 아무도 언급하지 않았습니다. 백엔드로서 웹 기반 소프트웨어의 상업적 제공자; 나는 그것이 위험이라고 믿는다. 마멀레이드는 무료 소프트웨어이며 내장 된 것조차 다른 사람이 설치할 수 있습니다.
nic ferrier

no one has mentioned the risks involved in using github, a commercial provider of web based software, as a backend:하지만 그 문제는 지금이 있다고 사라집니다 확신 마이크로 소프트 GitHub의이 ;-)
TomRoche

13

여기에 다른 답변을 보충하는 추가 정보가 있습니다.

  1. MELPA 및 MELPA "안정한"에 대한 정보-

    질문 자체에 대한 주석을 포함하여 StackOverflow에서 매우 많은 중복 질문 을 살펴보십시오 . 특히,이 의견은 Donald Curtis (MELPA 및 MELPA의 관리자)와 이메일을 교환 한 후 게시 한 의견입니다.

    그의 관점에서 [도날드 커티스 (Donald Curtis)], 그리고 저와 의사 소통을 이해하면서 "안정된"MELPA 사이트는 유지 관리 모드에만 있습니다. 내 코드와 같은 코드가없는 유일한 이유 는 "안정된"사이트에 대한 위키 [Emacs Wiki] 에서 아무도 업로드를 구현하지 않았기 때문입니다 . 또한 패키지가 안정적이고 위험한지 여부를 판단하기 위해 필터링을하지 않는 사람도 "큐팅"을 수행 할 수 없습니다. 패키지의 개발 버전을 이전 버전과 구별하려는 일부 패키지 개발자는 두 사이트의 존재를 요청했습니다 ( "안정적" ") 버전.

    요약하면, "MELPA 안정"의 내용에 대해 본질적으로 더 "안정적인"것은 없습니다 . 버전 번호 및 피드 방법이 다를 수 있습니다. 그게 다야. 그리고 특정 패키지 관리자가 "안정된"버전과 "개발"버전을 구별하고이를 두 개의 다른 사이트에 업로드하여이를 수행하려는 경우 해당 패키지에 영향 을줍니다 .

  2. MELPA와 Marmalade (및 GNU ELPA)의 한 가지 차이점은 MELPA에 기여한 코드가 git 저장소에서 제공 될 필요가 없다는 것입니다. 특히, Emacs WikiElisp 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. 행복한 해킹.


매우 안심입니다.
nic ferrier

1
MELPA 의견에 동의하지 않습니다. 패키지 작성자는 MELPA에 아무것도 "릴리스"하지 않습니다. 그 또는 그녀는 자신의 리포지토리에 맡기고 MELPA는 그것을 가져옵니다. 차이점은 MELPA가 무엇이든 선택하고 MELPA 안정적인 선택은 태그지정된 릴리스를 선택한다는 것 입니다. 이것은 실제로 선호의 문제입니다. 어떤 사람들은 항상 피처 브랜치를 만들고 트렁크를 신성한 것으로 취급하고 트렁크에 병합함으로써 변화가 준비되었다는 신호를 선호합니다. 일부는 트렁크에서 개발되지만 명시 적 태그 지정을 통해 준비된 릴리스를 표시합니다. 두 가지 방법 모두 합리적입니다…
Mekk

1
… 개성 나는 언제 그리고 왜 출시해야하는지 명확하게 알려주기 때문에 태그 쪽에 있습니다. 변경 사항이 얼마나 큰지 알려주고 사람에게 친숙한 버전 번호를 사용할 수있게합니다). 결론 : 태그 지정 릴리스를 선호하는 작성자가 있으면 melpa 안정은 장점이 있습니다. 태그 지정을 통해 릴리스를 관리하는 저자에게는 아무런 문제가 없다고 말하고 싶습니다. 풀린다.
Mekk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.