我使用前奏作为碱的Emacs配置。 我已经安装了很多从包管理器包,我想用另一台机器上我的设置。
我不想携带安装的软件包,也是我不想手动创建一个列表。
什么是保存列表中的所有已安装的软件包为前奏,package.el或任何其他文件,这样,当我把这个配置我的其他机器,它们会自动得到安装有在第一次使用的方法是什么?
我使用前奏作为碱的Emacs配置。 我已经安装了很多从包管理器包,我想用另一台机器上我的设置。
我不想携带安装的软件包,也是我不想手动创建一个列表。
什么是保存列表中的所有已安装的软件包为前奏,package.el或任何其他文件,这样,当我把这个配置我的其他机器,它们会自动得到安装有在第一次使用的方法是什么?
你可以得到已安装的软件包(不包括在建包)从变量列表package-activated-list
。 要在启动时自动安装它们,看到这样的问题: 如何通过指定包的名称列表自动安装emacs的包?
更具体地讲,如果你这样做章V包激活名单 ,复制显示的值,然后将它作为价值prelude-packages
,Emacs会自动确保这些包都安装上启动。
规范的方法是最好的(由ataylor描述)。 这里是一个更笨拙的方法。
MX列表包 。 安装CS,直到你找到安装包的第一行。 先从C-SPC选择。 往下走,直到你到达内置包。 其Mw复制。 CX b。对于新的缓冲区。 用Cy粘贴。 CX铯保存文件。
唯一的好处,我看到的是,这是一点点更多的描述。 显示你的包的小描述。 有用的,当你安装一些软件包,并忘掉它。
截至提到如何通过指定包的名称列表自动安装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
在默认情况下只检索可用于每个包的最新版本。 要旨