-->

如何保存所有已安装包的列表在Emacs 24?(How to save a list of all

2019-08-04 02:30发布

我使用前奏作为碱的Emacs配置。 我已经安装了很多从包管理器包,我想用另一台机器上我的设置。

我不想携带安装的软件包,也是我不想手动创建一个列表。

什么是保存列表中的所有已安装的软件包为前奏,package.el或任何其他文件,这样,当我把这个配置我的其他机器,它们会自动得到安装有在第一次使用的方法是什么?

Answer 1:

你可以得到已安装的软件包(不包括在建包)从变量列表package-activated-list 。 要在启动时自动安装它们,看到这样的问题: 如何通过指定包的名称列表自动安装emacs的包?

更具体地讲,如果你这样做章V包激活名单 ,复制显示的值,然后将它作为价值prelude-packages ,Emacs会自动确保这些包都安装上启动。



Answer 2:

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

MX列表包安装CS,直到你找到安装包的第一行。 先从C-SPC选择。 往下走,直到你到达内置包。 其Mw复制。 CX b。对于新的缓冲区。 用Cy粘贴。 CX铯保存文件。

唯一的好处,我看到的是,这是一点点更多的描述。 显示你的包的小描述。 有用的,当你安装一些软件包,并忘掉它。



Answer 3:

截至提到如何通过指定包的名称列表自动安装emacs的包? ,倒不如也记录你所需要的软件包的版本。 为了做到这一点,你可以使用下面的功能:

(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)对。 不幸的是,我一直没能找到一种方法来安装包的特定版本。 这似乎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在默认情况下只检索可用于每个包的最新版本。 要旨



文章来源: How to save a list of all the installed packages in Emacs 24?