Есть ли способ установить пакеты ELPA из командной строки?

Я заинтересован в стандартизации конфигураций emacs, которые некоторые из нас используют (~5 человек).

есть ли способ установить пакеты ELPA из функций lisp, которые могут быть включены в скрипт, если мы знаем набор пакетов, которые мы хотим? Все, что я могу найти, это как вызвать list-packages и установить отдельные пакеты графически.

4 ответов


что нужно использовать


еще одна вещь вы можете сделать, это сделать свой собственный пакет, который зависит от других пакетов, которые вы хотите установить. Затем установите этот пакет.

пакеты могут быть установлены из файла с помощью:

M-x package-install-from-file

или вы можете сделать свой собственный архив пакетов с пакетом, вы можете использовать elpakit для этого.

вы также можете сделать это из командной строки:

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

установка из командной строки операционной системы если хотите.


вы также можете взглянуть на бочковой. Он позволяет объявлять пакеты, которые вы хотите установить в файле с именем Cask использование описанного DSL здесь. Затем из командной строки перейдите в каталог и запустите cask. Он установит все пакеты, объявленные в .

в файле init вам нужно будет добавить следующие строки, чтобы использовать пакеты, установленные cask.

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

кроме того, вы можете получить список уже установленных пакетов 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 packages

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