`package.el`에 대한 대체 패키지 관리자의 사용 사례는 무엇입니까?


14

배경

나는 매일 이맥스를 사용하지만 대부분 일을 끝내기 위해 사용합니다. 패키지를 추가하는 것 이상으로 사용자 정의하는 것을 좋아하지 않으며 문제 해결을 좋아하지 않습니다. 나는 이맥스가 좋은 OS가하는 방식을 배경으로 희미 해지기를 원하고 일을 시작하기를 원한다. 얼마 전에 필자 el-get는 사용할 수 없었던 패키지를 설치할 수 있었고 일시적인 문제를 일으킬 수있는 번짐 가장자리보다는 조직 모드 package.elmaint분기를 선택하는 등의 제어 기능 을 강화할 수있었습니다. 이제 사용 여부를 잘 모르겠습니다 el-get.

질문

el-get다양한 저장소와 이맥스에 대한 훌륭한 솔루션 인 것처럼 보였습니다. 그것으로는 불가능했던 기능을 제공했습니다 package.el. 이제 package.el이맥스 (의 최신 버전에 >=24.4) 지원하는 여러 저장소, 유스 케이스 무엇 el-get이맥스의와 유사한 대안이 내장 패키지 관리자?


2
quelpa 도 참조하십시오 . 짧은 대답은 : ELPA / MELPA / Marmalade에없는 패키지가 여전히 있다는 것입니다. 필요한 것이 있다고해도 끔찍한 해킹 없이도 얻을 수 있습니다 el-get.
PythonNut

답변:


8

ELPA에는 여전히 불가능한 것들이 있으며 ELPA의 개념에 맞지 않기 때문에 ELPA에서는 항상 불가능한 것들이 있습니다. 포크에서 해시로 특정 커밋을 설치할 수는 없습니다. 저장소. 마찬가지로, 패키지를 설치하기 전에 사용자 정의 로컬 패치를 패키지에 적용 할 수 없습니다. 이러한 기능은 단순히 ELPA의 범위를 벗어나므로 필요한 경우 대체 패키지 관리자를 사용해야합니다.

하지만 요즘에는 그 엘겟이 일종의 레거시 솔루션이라고 생각합니다. ELPA가 사실상 Emacs의 표준 패키지 관리자가되었으므로 대체 패키지 관리자는 ELPA와 완벽하게 통합되어야합니다. 그러나 el-get은 자체 패키지를 ELPA에 노출시키지 않습니다. 즉, 패키지가 ELPA에 완전히 표시되지 않으며 ELPA 패키지는 el-get 패키지에 의존 할 수 없으며 종속성 관리에 명백한 영향을 미칩니다.

ELPA 이외의 기능이 필요한 경우 현재 el-get 대신 QUELPA를 살펴보십시오.


"아무도 그렇게하지 않았다면 계속 유지하기를 귀찮게 할 것입니다." 그래도 목적은 개발자의 자아 일 수 있습니다.
T. Verron 2016 년

:) 여전히 엘이-얻을 수 있으며, QUELPA 빠르게 얻을로는 강력한 자아하지만, 그 쉽게 큰 커뮤니티로 유치 할 수있을 것
lunaryorn

물론 일반적으로 논평하고있었습니다. ;)사용중인 패키지의 세부 사항에 대해서는 상식 설명을 넘어서서 귀하의 답변이 el-get 및 quelpa의 목적을 보여줌으로써 강력한 지적을합니다.
T. Verron 2016 년

@ T.Verron Yep, 포인트 촬영. 나는 그 말을 제거했는데, 그것은 바보 같은 말이었습니다. 죄송합니다.
lunaryorn 2016 년

@lunaryorn el-get, however, does not expose its own packages to ELPA, meaning that **its packages** are entirely invisible to ELPA and ELPA 은 el-get이 설치 한 것을 의미합니까?
toogley

6

straight.el기존의 모든 패키지 관리 솔루션을 개선하려는 Emacs의 새로운 패키지 관리자를 작성했습니다 . 거기에있다 광범위한 섹션 straight.el에 대한 문서는 다른 패키지 관리자에 대한 비교는 , 그러나 여기 아주 짧은 요약 한 것입니다 :

  • package.el특정 버전의 패키지를 선택할 수있는 옵션없이 중앙 서버에서 불투명 한 타르볼을 다운로드하며 패키지를 로컬로 변경할 수 없습니다. 업스트림 변경에 기여하는 것은 불가능합니다. straight.elGit 리포지토리를 분산 방식으로 복제하지만 원하는 경우 MELPA , GNU ELPAEmacsMirror의 레시피를 자동으로 사용 하며 임의로 로컬 변경을 수행하고 변경 사항을 커밋하고 업스트림에 기여할 수 있습니다. 이를 수동으로 수행하거나 내장 대량 저장소 관리 조작을 사용할 수 있습니다. 패키지 변경은 자동으로 감지되며 수동 재 구축이 필요하지 않습니다. 더욱이,straight.el 모든 패키지의 Git 해시를 포함하는 개정 잠금 파일을 작성할 수 있으므로 Emacs 구성에 대한 완전한 재현성을 지원합니다.
  • QuelpaCask 는 모두를 기반으로 package.el하며 동일한 단점을 많이 상속받습니다. 예를 들어 Cask에는 특정 버전의 패키지를 설치하는 개념이 없습니다. Quelpa는하지만 Git 해시를 init 파일에 하드 코딩해야합니다. 모든 핵심 기능을 더 많은 사용 사례에 맞춘 통합 된 디자인으로 대체하여 완전히 straight.el빠져 나갑니다 package.el.
  • el-get 은 모든 에서 패키지를 설치할 수 있다는 장점이 있습니다 (모든 알려진 버전 제어 시스템, 임의의 HTTP, 시스템 패키지 관리자, EmacsWiki, go get!?). 그러나 많은 소스를 지원함으로써 el-get은 제공하는 일종의 고급 패키지 관리 작업 (예 : 개정 잠금 파일 및 대화식 저장소 관리 작업을 통한 재현성)을 straight.el제공 할 수 없습니다. straight.el대부분의 패키지는 Git을 통해 사용 가능하며 EmacsMirror 를 통해 얻을 수없는 패키지는 가능하므로 Git 만 지원합니다 . 참고 straight.el원하는 경우, 그럼에도 불구하고 추가 버전 관리 백엔드위한 확장 API (예 의욕에 대한)를 제공은 향후에 추가합니다.
  • Borg 는 매우 유사한 철학을 가지고 있으며 straight.el동일한 장점을 많이 제공합니다. 그러나 전체 패키지 관리자로 설계되지 않았 epkg으며 auto-compile, 및 Magit와 같은 다른 도구와 관련하여 사용되도록 설계되었습니다 . 반대로, straight.el자체 포함되어 있으며 추가 구성이 거의 필요하지 않고 필요한 모든 것을 자체적으로 제공합니다. 또한, Borg는 인터페이스가 약간 거친 Git 서브 모듈을 사용하는 반면 straight.el독립적으로 관리되는 Git 리포지토리를 사용하여 추가 유연성과 성능을 제공합니다.
  • 수동 접근 방식도 있지만 권장하지 않습니다. 처음 몇 달이 지나면 Borg를 다시 발명했을 것입니다. 다음 몇 달이 지나면 다시 발명했을 것 straight.el입니다. 패키지 관리에 대해 많이 배울 것입니다.;)

4

장단점이 있지만 @lunaryon (rejeep)의 강력한 의견에도 불구하고 el-get은 여전히 ​​관련이 있다고 생각합니다.

나는 raw package.eluse-package 와 함께 잠시 (2-3 년) 사용한 다음 el-get으로 전환 한 다음 Cask 로 전환했습니다 . 며칠 전에 엘 겟으로 돌아갔습니다. 이전 package.el 은 다른 많은 사람들과 마찬가지로 추가 기능을 수동으로 처리했습니다.

왜 돌아가 않았다 엘 얻을 ? 나는 git repo (MELPA에없는 Github 패키지)가 아닌 것에 대해 Cask의 이상한 점을 발견했다 . el-get config와 나는 곧 갈 수있어서 좋았습니다.

el-get 에 대해 내가 좋아하는 몇 가지 :

  • git뿐만 아니라 여러 fetcher를 지원합니다.
  • 사전 정의 된 레시피가 충분합니다.
  • 시작시 Cask 보다 빠릅니다 .
  • 그리고 예 @lunaryorn, Wiki는 코드를 배포하는 장소가 아니지만 emacsmirror (Github) 에 복제본이 없다면 여전히 Github 저장소를 만들고 싶지 않습니다 .
  • 자체 포함되어 있으며 Cask 를 사용하면 외부 설치가 필요합니다. 모듈을 구성하지 않는 단일 init 파일을 allout-mode 와 함께 사용하여 섹션을 탐색합니다.
  • el-get 은 사용자 관점에서 충분히 간단합니다.

참고 : OSX 및 Linux에서 Emacs Git HEAD를 실행하고 있습니다.


Cask에 문제가있어 죄송하지만 Cask에 대한 개인적인 문제와 좌절이이 질문과 관련이 있다고 생각하지 않습니다. 특히 Cask는 매우 좁은 범위 (주로 패키지 개발)를 가진 ELPA의 프론트 엔드입니다. 패키지 관리에도 사용할 수 있지만 개념적 으로 el-get 과 직교 합니다.
lunaryorn

다시 말해서, Cask는 el-get을 대체하거나 목표로하지 않습니다. 전적으로 관련이 없습니다. ELPA는 el-get을 대체합니다. Git 기반 설치를위한 최선의 선택은 더 이상 필요하지 않습니다. QUELPA입니다. 제 대답에서 말했듯이, QUELPA를 사용해야하는 유효한 이유입니다.
lunaryorn

1
나는 Cask의 좁은 범위에 동의합니다. 나를 틀리지 마십시오. Cask의 "문제"에도 불구하고 일부 Linux 시스템에서 계속 사용합니다. 나는 또한 "git-only"패키지를 가지고 있지 않으며, 그중 일부는 수은 또는 다른 버전 제어 시스템에 있습니다. 또한 MELPA 또는 git 저장소에 없을 가능성이있는 다른 사람들의 패키지도 사용합니다. 내 유일한 요점은 MELPA에 누군가가 필요로하는 모든 패키지가 포함되어 있지 않으면 el-get이 여전히 괜찮다는 것입니다. QUELPA를 알고 있지만 el-get은 나에게 충분합니다.
rimero

ELPA와 Emacs의 내장 종속성 관리를 우회하여 파손 및 중복 패키지 설치가 발생할 수 있기 때문에 el-get은 요즘 더 이상 유효하지 않습니다. QUELPA는 el-get과 동일한 기능을 제공하지만이 결함은 없습니다. 요즘에는 더 나아졌습니다.
lunaryorn 2016 년

@rimero 나는 똑같은 경험을했습니다. 게다가, 나는 며칠 전에 Quelpa를 시험해 보았고 적어도 지금은 그것을 포기해야했습니다. El-get은 적어도 내 유스 케이스에는 여전히 더 유연하고 강력하며 전반적으로 더 빠른 것 같습니다. 나는 그들이 서로 다른 두 가지 관점을 수용한다고 믿기 때문에 어떤 종류의 Emacs 사용자인지에 따라 달라질 수 있습니다. 하나 또는 다른 것을 커밋하기 전에 두 가지를 모두 시도하는 것이 좋습니다.
gsl

1

를보고 싶을 수도 있습니다 paradox. 다른 패키지 관리자는 아니지만에 대한 깔끔한 프론트 엔드입니다 package.el. 예를 들어, 패키지를 업데이트 할 때 패키지를 설치할지 여부를 묻고 한 단계에서 이전 패키지를 삭제할 수 있습니다.

당신이 그것을 사용하는 경우, 당신은 아마 설정할 paradox-execute-asynchronouslyt당신의 init 파일에서.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.