有没有办法从命令行安装ELPA包?

时间:2013-10-12 06:07:07

标签: emacs elisp elpa

我对标准化我们几个人使用的emacs配置感兴趣(~5个人)。

如果我们知道我们想要的软件包集,是否有办法从lisp函数安装ELPA软件包可以包含在脚本中?我能找到的就是如何调用list-packages并以图形方式安装各个包。

4 个答案:

答案 0 :(得分:8)

您需要使用package-install功能,例如:

(mapc 'package-install install-list)

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

答案 1 :(得分:4)

您可以做的另一件事是创建自己的包,这取决于您要安装的其他包。然后安装该软件包。

可以从文件安装包:

M-x package-install-from-file

或者您可以使用包制作自己的包存档,您可以使用elpakit来执行此操作。

您也可以从命令行执行此操作:

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

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

答案 2 :(得分:3)

您可能还想查看cask。它允许您使用描述为here的DSL声明要在名为Cask的文件中安装的软件包。然后从命令行转到目录并运行cask。它将安装Cask文件中声明的所有包。

在init文件中,您需要添加以下行以使用cask安装的软件包。

(require 'cask "~/.cask/cask.el")
(cask-initialize)

答案 3 :(得分: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))