在使用package.el
+ Quelpa进行长期艰苦的奋斗之后,我忍无可忍,写了我自己的包裹管理器。它旨在package.el
通过提供几乎在所有方面都出色的软件包管理体验来完全替代。
您可以阅读非常详尽的文档以了解其所有功能,但是与此问题最相关的一个是straight.el
着眼于完美的可重复性。这意味着您是正常启动Emacs还是在新机器上启动Emacs都无关紧要,并且任何本地更改都是受版本控制的,并且可以恢复为规范状态。实际上,这是通过(1)克隆作为Git存储库的软件包,并提供用于管理其状态的自动化工具来实现的;(2)使用init文件作为包管理状态的唯一事实来源,而在其他地方没有存储任何可变数据;(3)使用可选的版本锁定文件来指定每个软件包以及任何配方存储库的确切Git版本。straight.el
本身。
首先,插入bootstrap片段,它将安装并激活straight.el
。然后,要确保安装了软件包,只需straight-use-package
在您的init文件中调用即可:
(straight-use-package 'projectile)
是的,就是这么简单。没有处理package-refresh-contents
或任何垃圾。如果您从init文件中删除此表单并重新启动Emacs,则将不再加载 Projectile (与中的不同package.el
)。这意味着您不必担心配置会以某种方式无法在新计算机上运行,因为您不小心依赖了未声明的软件包。
您可以在整个init文件中随时随地安装软件包(无需在单个位置声明它们的列表)。当然你也可以
(dolist (package '(ace-jump-mode ... zzz-to-char)) (straight-use-package package))
如果您更喜欢列表。但是,我建议您使用它use-package
来管理软件包配置。首先,您必须安装它:
(straight-use-package 'use-package)
然后,由于straight.el
具有的内置集成use-package
,因此以下“有效”:
(use-package projectile
:straight t
:init (projectile-mode 1))
编写完初始化文件以安装所需的软件包后,请运行M-x straight-freeze-versions
将版本锁定文件保存到~/.emacs.d/straight/versions/default.el
。您应该将此文件保留在版本控制下,因为straight.el
当您在新计算机上首次启动Emacs时,它将允许检出所有软件包的正确版本。(您可以使用手动还原到锁定文件中指定的版本M-x straight-thaw-versions
。)
为了支持我在另一个答案中提到的机器本地点文件的思想,straight.el
提供了一个概要文件系统。我仍然建议为您的点文件使用符号链接(在这种情况下,init.el
请使用本地初始化文件(如果适用),以及版本锁文件(如果要使用一个))。
如果您想知道如何straight.el
与其他程序包管理器进行比较,请查看广泛的比较部分。但是,关于其他所有内容,还有很多文档。
init.el
(例如,使用git),此方法也将有效(基于use-package
):lunaryorn.com/posts/…–