是否可以同时使用MELPA和MELPA稳定的?


29

我将melpa-stable用作其他软件包存储库,但melpa-stable上没有我喜欢使用的软件包之一(冰柱)。有什么方法可以将package.el配置为通常使用melpa-stable,但将melpa用于特定的软件包子集?


1
升级到emacs 24.4 ;-)
马拉巴巴2014年

@Malabarba,这肯定在卡片上……
Timo Geusch 2014年

我也找不到icicles在梅尔帕。
user650654

Answers:


34

使用package-archive-priorities为此目的而设计的选项。要比MELPA更喜欢MELPA稳定版,请将以下内容添加到您的初始化文件中:

(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用于特定的软件包。如果没有任何自定义软件包,则默认情况下,el.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-bug请Emacs开发人员实施某种“默认存档”功能,或要求冰柱的维护者发布经过正确标记的发行版,以便MELPA Stable可以为其构建稳定的软件包。但是,这两者都不容易,因为前者需要对package.el进行较大的更改,而后者则将冰柱从EmacsWiki移到带有标签的适当VCS存储库中,我认为它的维护者不愿意这样做,因为如果是的话,他们早就可以做到了。


0

在这里,您将讨论有关并行使用两个存储库的讨论,因此在24.4中应该可以实现。例如,您是否尝试过使用defun更新存储库列表,然后进行paradox-require,最后返回到原始存储库列表?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.