如何保存Emacs 24中所有已安装软件包的列表?

我正在使用前奏作为基础的Emacsconfiguration。 我已经从软件包pipe理器中安装了很多软件包,并且想在另一台机器上使用我的设置。

我不想携带已安装的软件包,也不想手动创build列表。

将所有安装的软件包列表保存到prelude-package.el或其他文件的方式是什么,这样当我把这个configuration文件保存到我的另一台机器上时,它们会在第一次使用时自动安装?

您可以从variablespackage-activated-list获取当前安装的软件包列表(不包括内置软件包)。 要在启动时自动安装它们,请参阅以下问题: 如何通过指定软件包名称列表来自动安装emacs软件包?

更具体地说,如果您使用Ch v package-activated-list ,复制所显示的值并将其作为prelude-packages的值插入,emacs将自动确保在启动时安装这些软件包。

规范的方法是最好的(由ataylor描述)。 这是一个更笨拙的方法。

Mx列表包Cs安装直到find安装包的第一行。 从C-SPC开始select。 下去,直到你到达内置的包。 复制与MwCx b为新的缓冲区。 贴上CyCx Cs保存文件。

只有我看到的优势是这是一个更多的描述。 显示你的软件包的一个小的描述。 当你安装一些软件包并忘记它时很有用。

正如在如何通过指定软件包名称列表自动安装emacs软件包? ,最好还要logging你需要的软件包版本。 为此,您可以使用以下function:

 (defun list-packages-and-versions () "Returns a list of all installed packages and their versions" (mapcar (lambda (pkg) `(,pkg ,(package-desc-version (cadr (assq pkg package-alist))))) package-activated-list)) 

这会给你一个(NAME VERSION)对的列表。 不幸的是,我一直无法find安装特定版本的软件包的方法。 它似乎package.el总是抓住最新的可用。 我现在正在做的是:

 (defun install-packages-with-specific-versions (package-version-list) "Install the packages in the given list with specific versions. PACKAGE-VERSION-LIST should be a list of (NAME VERSION) lists, where NAME is a symbol identifying the package and VERSION is the minimum version to install." (package-download-transaction (package-compute-transaction () package-version-list))) 

我写了一个更长的函数来安装匹配确切版本号的包,但是它失败了,因为package.el默认只检索每个包可用的最新版本。 要旨

Interesting Posts