Ответ 1
Вам нужно использовать функцию package-install
, например:
(mapc 'package-install install-list)
переменная install-list
должна содержать список имен пакетов, которые вы хотите установить.
Я заинтересован в стандартизации конфигураций emacs, которые некоторые из нас используют (~ 5 человек).
Есть ли способ установить пакеты ELPA из lisp функций, которые могут быть включены в script, если мы знаем набор пакетов, которые нам нужны? Все, что я могу найти, - это вызвать list-packages
и графически установить отдельные пакеты.
Вам нужно использовать функцию package-install
, например:
(mapc 'package-install install-list)
переменная install-list
должна содержать список имен пакетов, которые вы хотите установить.
Вы также можете взглянуть на cask. Он позволяет объявлять пакеты, которые вы хотите установить, в файл с именем Cask
с использованием DSL, описанного здесь здесь. Затем из командной строки перейдите в каталог и запустите Cask
. Он установит все пакеты, объявленные в файле Cask
.
В файле init вам нужно будет добавить следующие строки, чтобы использовать пакеты, установленные в cask.
(require 'cask "~/.cask/cask.el")
(cask-initialize)
Другое, что вы можете сделать, это сделать свой собственный пакет, который зависит от других пакетов, которые вы хотите установить. Затем установите этот пакет.
Пакеты могут быть установлены из файла с помощью:
M-x package-install-from-file
или вы можете создать свой собственный пакетный архив с пакетом, вы можете использовать elpakit для этого.
Вы также можете сделать это из командной строки:
emacs -e "(progn (package-initialize)(package-install 'packagename))"
для установки из командной строки операционной системы, если хотите.
Кроме того, вы можете получить список уже установленных пакетов 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))