这一直使我感到困惑,因为人们说MELPA确实具有较新版本的软件包,但是还不清楚,是否GNU ELPA只是MELPA的子集,还是我确实需要两者?
我问的原因是我正在大量试验我的软件包,并且package-list-packages
花费了相当长的时间。我知道package-list-packages-no-fetch
,但是我经常会想获得最新的软件包列表。
因此,问题是,是否可以像使用MELPA和GNU ELPA一样使用MELPA并获得相同的(可能是更新的版本)软件包?
这一直使我感到困惑,因为人们说MELPA确实具有较新版本的软件包,但是还不清楚,是否GNU ELPA只是MELPA的子集,还是我确实需要两者?
我问的原因是我正在大量试验我的软件包,并且package-list-packages
花费了相当长的时间。我知道package-list-packages-no-fetch
,但是我经常会想获得最新的软件包列表。
因此,问题是,是否可以像使用MELPA和GNU ELPA一样使用MELPA并获得相同的(可能是更新的版本)软件包?
Answers:
首先,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年左右以来未添加任何新用户。
package-archives
并更新索引,例如使用即可M-x package-refresh-contents
。M-x list-packages
应该显示与以前不同的列表。
不,您可能不需要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-lisp。rainbow-mode
,如果您使用源代码,则需要了解什么load-path
(http://emacswiki.org/emacs/LoadPath)。
您还可以建议package--add-to-archive-contents
先调整软件包,然后再将其显示在软件包管理器中。这是一种无证黑客。它从Emacs 23.4到Emacs 27均有效。请参见init-elpa.el
例如。