如果我有MELPA,我还需要GNU ELPA吗?


31

这一直使我感到困惑,因为人们说MELPA确实具有较新版本的软件包,但是还不清楚,是否GNU ELPA只是MELPA的子集,还是我确实需要两者?

我问的原因是我正在大量试验我的软件包,并且package-list-packages花费了相当长的时间。我知道package-list-packages-no-fetch,但是我经常会想获得最新的软件包列表。

因此,问题是,是否可以像使用MELPA和GNU ELPA一样使用MELPA并获得相同的(可能是更新的版本)软件包?


5
是的,您将始终需要GNU Elpa。
马拉巴巴

Answers:


45

首先,ELPA是规范的名称,即Emacs Lisp软件包存档。该规范有三种广为人知的实现,即GNU ELPA,Marmalade和MELPA。

GNU ELPA是GNU Emacs的官方存档,开箱即用,适用于全新的Emacs安装。它相对较小,因此需要进行版权分配并与官方邮件列表配合才能起作用。与Linux发行套件归档文件相比,这是我们最接近审查的事情。

Marmalade是一个非官方存档,其中包含大量版本化的软件包。作者和维护者需要手动将其发行版上传到其中。在允许每个新成员拥有一个用户帐户之前,会对其进行一次审核,然后,他们可以根据需要自由发布。

MELPA是另一个具有最大数量软件包的非官方档案。在从其(通常是VCS)源自动构建软件包之后,将对每个软件包进行简短的代码样式审核,包括其拉取请求。重建可能每小时发生一次。还有一个MELPA稳定器,它仅构建带标记的发行版,但软件包少得多,甚至少于Marmalade。

至于重叠部分,GNU ELPA和Marmalade之间几乎没有重叠,GNU ELPA和MELPA类似。但是,果酱和MELPA有很多重叠。我估计大多数果酱是MELPA的子集。这就是为什么您可以使用MELPA来处理大多数软件包,也许使用GNU ELPA来解决一些缺失的软件包。

更新:根据malabarba的包装统计, MELPA Stable的可用包装数量确实超过了果酱。我现在就选果酱。

更新:果酱基本上已经死了。证书已过期,几乎没有任何新软件包上载。这是由于其过程非常不寻常,您需要由所有者手动将其添加到用户,并且由于他失踪了,自2016年左右以来未添加任何新用户。


听起来像Melpa + Gnu Elpa,而不是使用果酱,是您的最佳选择。有简单的转换方法吗?
justingordon

只需相应地自定义package-archives并更新索引,例如使用即可M-x package-refresh-contentsM-x list-packages应该显示与以前不同的列表。
wasamasa

似乎malarbaba的包裹统计信息停留在2015
JeanPierre

由于果酱已经死了,我又添加了一个更新
wasamasa

-5

不,您可能不需要GNU ELPA或任何ELPA。

不使用GNU ELPA或任何第三方存储库的实际原因是为了保护我的Emacs免受ELPA关闭。关机确实会不时发生(请参阅https://www.reddit.com/r/emacs/search/?q=elpa%20down&restrict_sr=1

我的大多数软件包都是从https // melpa.org下载的,我可以通过为选定的GNU ELPA软件包创建一个小的本地软件包镜像来避免使用GNU ELPA。

检查我的设置https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-elpa.el,不使用GNU ELPA。

如果必须使用某些仅GNU ELPA的软件包,则宁愿创建自己的本地ELPA(就像创建文本文件一样简单archive-contents),请检查my ~/.emacs.d/localelpa

例如,seq-2.20.tar仅存在于GNU ELPA,我需要它。因此,我将此包裹添加到了我的本地elpa中https://github.com/redguardtoo/emacs.d/tree/master/localelpa

目前,我仅使用GNU ELPA的四个软件包,

gnu-elpa-keyring-update-2019.3.tar
let-alist-1.0.5.el
seq-2.20.tar
undo-tree-20170706.246.tar

这些包放在我的包中,localelpa因此我不需要访问GNU ELPA。

您还可以检查我的软件包https://github.com/redguardtoo/elpa-mirror,该软件包从已安装的软件包创建本地存储库。因此,即使是远程存储库(GNU ELPA,MELPA)现在也是可选的。

您也可以使用源代码而不是下载的软件包。请检查https://github.com/redguardtoo/emacs.d/tree/master/site-lisprainbow-mode,如果您使用源代码,则需要了解什么load-pathhttp://emacswiki.org/emacs/LoadPath)。

您还可以建议package--add-to-archive-contents先调整软件包,然后再将其显示在软件包管理器中。这是一种无证黑客。它从Emacs 23.4到Emacs 27均有效。请参见init-elpa.el例如。


7
对于Auctex,seq.el,let-alist,rainbow-mode等程序包,您还需要GNU ELPA。因此,我几乎不认为它已经过时,而随着越来越多的人进入Emacs开发并希望他们的发展,它的重要性正在上升。包,方便所有人使用。
wasamasa 2015年

我对此问题做了一些更新。
chen bin

@wasamasa您能解释一下,为什么我需要gnu elpa来安装auctex等软件包?
toogley '16

1
@toogley因为它仅在GNU ELPA上可用,所以。
wasamasa
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.