有没有一种方法可以通过命令行安装ELPA包?

15

我希望能够统一我们几个人(大约5人)使用的emacs配置。

如果我们知道我们需要安装哪些ELPA包,是否有一种方法可以从lisp函数中安装这些包,并将其包含在脚本中?我能找到的只是如何通过图形界面调用list-packages并单独安装软件包。

4个回答

9
您需要使用package-install函数,例如:
(mapc 'package-install install-list)

install-list 变量应包含您想要安装的软件包名称列表。


4
你可能还想看一下 cask。它允许你在名为 Cask 的文件中声明要安装的软件包,使用此处描述的DSL语言。然后从命令行进入该目录并运行cask。它将安装在Cask文件中声明的所有软件包。
在你的初始化文件中,你需要添加以下几行代码来使用cask安装的软件包。
(require 'cask "~/.cask/cask.el")
(cask-initialize)

4

另一件事情是,您可以创建自己的包,该包依赖于其他要安装的包。然后安装该包。

可以使用以下命令从文件中安装软件包:

M-x package-install-from-file

或者您可以将包含要安装的软件包的包归档成自己的包存档,可以使用elpakit进行操作。

您还可以通过以下命令行方式完成此操作:

emacs -e "(progn (package-initialize)(package-install 'packagename))"

如果愿意,也可以从操作系统命令行中进行安装。


2

此外,您可以通过以下方式获取已安装的ELPA软件包列表:

(defun eab/print-0 (body)
  "Insert value of body in current-buffer."
  (let ((print-length nil)
        (eval-expression-print-length nil))
    (prin1 `,body (current-buffer))))

(defun eab/package-installed ()
  "Get the list of ELPA installed packages."
  (mapcar (lambda (x) (car x)) package-alist))

(eab/print-0 (eab/package-installed))

对于el-get包也是同样的情况

(defun eab/el-get-installed ()
  "Get the list of el-get installed packages."
  (mapcar 'intern
      (el-get-list-package-names-with-status "installed")))

(eab/print-0 (eab/el-get-installed))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接