MELPA와 MELPA 안정을 동시에 사용할 수 있습니까? 추가 패키지 저장소로

추가 패키지 저장소로 melpa-stable을 사용하지만 melpa-stable에서는 사용하려는 패키지 중 하나 (차가워 요)를 사용할 수 없습니다. 일반적으로 melpa-stable을 사용하도록 패키지의 특정 하위 집합에 대해 melpa를 사용하도록 package.el을 구성하는 방법이 있습니까?



답변

package-archive-priorities이 목적을 위해 만들어진 옵션 을 사용하십시오 . MELPA보다 MELPA Stable을 선호하려면 init 파일에 다음을 추가하십시오.

(setq package-archives
      '(("GNU ELPA"     . "https://elpa.gnu.org/packages/")
        ("MELPA Stable" . "https://stable.melpa.org/packages/")
        ("MELPA"        . "https://melpa.org/packages/"))
      package-archive-priorities
      '(("MELPA Stable" . 10)
        ("GNU ELPA"     . 5)
        ("MELPA"        . 0)))

숫자가 높을수록 패키지 아카이브의 우선 순위가 높습니다. 여러 아카이브에 존재하는 패키지의 경우 Emacs의 패키지 관리자는 우선 순위가 가장 높은 아카이브에서 패키지를 선택하고 버전 번호가 더 높은 경우에도 다른 아카이브의 패키지를 무시합니다. 패키지가 동일한 우선 순위의 두 개의 아카이브에 존재하면 더 높은 버전 번호가 이기고 결국 순서는 package-archives입니다.

모호성을 피하기 위해 기본 GNU ELPA 아카이브를 포함한 모든 아카이브에 우선 순위를 명시 적으로 지정하는 것이 좋습니다. package-archive-priorities기본 우선 순위가 0 이 아닌 아카이브는이 를 잊어 버리기가 너무 쉽습니다.

package-archive-priorities Emacs 25.1에서 소개되었습니다.


Emacs 24에서는 MELPA Stable을 기본값으로 설정하고 일반적인 방법으로 특정 패키지에 대해서만 MELPA를 사용할 수 없습니다. 사용자 정의없이 package.el의 기본값 은 MELPA 인 최고 버전을 제공하는 아카이브 입니다. 변경할 인터페이스가 없습니다.

그러나 Emacs 24.4부터 새로운 옵션을 package-pinned-packages사용하면 개별 패키지를 아카이브에 고정 할 수 있지만 요구 사항의 반대를 구현할 수 있습니다. 기본값은 MELPA이며 특정 패키지에는 MELPA Stable을 사용합니다.

따라서 현재 유일한 옵션은 package-pinned-packages수동으로 또는 일부 Emacs Lisp 코드로 사용하려는 모든 패키지 를 채우는 것입니다. 참고 package-pinned-packages설정해야합니다 전에 호출 package-refresh-contents하는 동안 고정을 평가하기 때문에 패키지 인덱스를 구축 패키지를 설치할 때, 그리고.

장기적인 해결책은 M-x report-emacs-bugEmacs 개발자에게 일종의 “기본 아카이브”기능을 구현하도록 요청하거나 고드름 관리자에게 태그가 지정된 릴리스를 만들어 MELPA Stable이 안정적인 패키지를 만들 수 있도록하는 것입니다. 전자는 package.el에 대한 더 큰 변경이 필요하고, 후자는 고드름이 EmacsWiki에서 태그가있는 적절한 VCS 저장소로 이동했기 때문에 쉽지 않은 것으로 판명되었습니다. 그들이 있었다면 그들은 오래 전에 해냈을 것입니다.


답변

여기 에서는 두 저장소를 동시에 사용하는 방법에 대해 설명하므로 24.4에서 가능합니다. 예를 들어 defun을 사용하여 repos 목록을 업데이트 한 다음 paradox-require 를 시도 하고 마지막으로 원래 repo 목록으로 돌아 오셨습니까?