2013-10-12 84 views
10

我对标准化少数人使用的emacs配置感兴趣(〜5人)。有没有办法从命令行安装ELPA包?

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

回答

7

你需要的是用package-install功能,如:

(mapc 'package-install install-list) 

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

2

此外,您可以通过

(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)) 

和同样得到已安装ELPA包的列表为EL-得到包

(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)) 
3

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

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

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

你可以做的另一件事是使你自己的包取决于你想要安装的其他包。然后安装该软件包。

包可以从文件中安装有:

M-x package-install-from-file

,或者你可以使自己的包档案与包,你可以使用elpakit做到这一点。

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

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

,如果你想从操作系统的命令行安装。

相关问题