Я вообще пишу код, войдя на удаленный компьютер (обычно AWS). У меня довольно большой список пакетов, которые я использую, и довольно большой .emacs.el. В то время как я могу быстро установить emacs на удаленную машину, я ищу способ "упаковать" мои emacs и разместить его где-нибудь, чтобы я мог быстро установить его на любую машину, на которую я вхожу. Каков наилучший способ сделать это?
Каков наилучший способ пакетной установки Emacs (пакеты и конфиг), чтобы он мог быстро быть установлен в любом месте?
Ответ 1
Сначала вы, очевидно, собираете все в исходный элемент управления (за исключением частного файла). Bitbucket и Gitlab предлагают частные репозитории.
Вы можете увидеть эту вики, чтобы указать все необходимые пакеты в файле инициализации. (это фактически используется Prelude)
Затем я вижу некоторые варианты.
Использовать Cask
Некоторые используют Cask для управления зависимостями пакетов, некоторые не
В файле Cask перечислены все зависимости:
(depends-on "cask")
(depends-on "dash")
(depends-on "evil")
Использовать org-mode
Некоторые записывают свою конфигурацию в org-mode и загружают ее вызовом org-babel, который можно выполнить в одной строке в ~/.emacs.d/init.el
:
(require 'org)
(require 'ob-tangle)
(org-babel-load-file (expand-file-name "~/.emacs.d/myemacs.org"))
Разделите конфигурацию в нескольких файлах
а некоторые разделили его на несколько файлов elisp.
Вот несколько хороших конфигураций, заслуживающих вдохновения:
- Noahfrederick использует org-mode и Cask: https://github.com/noahfrederick/dots/tree/master/emacs.d
- Purcell использует несколько файлов elisp, где каждый из них требует необходимый пакет: https://github.com/purcell/emacs.d/tree/master/lisp
В init-elpa.el
он определяет функцию, которая принимает пакет в аргументе и устанавливает его, если его нет:
(defun require-package (package &optional min-version no-refresh)
"Install given PACKAGE, optionally requiring MIN-VERSION.
If NO-REFRESH is non-nil, the available package lists will not be
re-downloaded in order to locate PACKAGE."
(if (package-installed-p package min-version)
t
(if (or (assoc package package-archive-contents) no-refresh)
(package-install package)
(progn
(package-refresh-contents)
(require-package package min-version t)))))
и в каждом файле он использует:
(require-package 'dired+)
Также зафиксируйте установленные пакеты
И для того, чтобы ваша конфигурация была быстрее установлена, вы также можете добавить установленные пакеты в исходный элемент управления. Таким образом, вы также можете обеспечить идентичную среду.
Ответ 2
Я всегда рекомендую разместить весь ~/.emacs.d
под управлением версии, включая все пакеты и другие библиотеки.
Это немного сложнее, и, может быть, немного беспорядочно, но если вы хотите гарантировать состояние конфигурации каждый раз, когда вы ее устанавливаете где-то новым, вам нужно иметь полную копию.
Использование контроля версий - это мое твердое предпочтение, потому что это делает тривиальным возвращать изменения в пакеты и т.д. Поэтому, если вы обновляете пакет, а Emacs ломается, это единственный шаг, чтобы вернуть вещи так, как они были (и так не требует, чтобы вы помнили, как они были).
При таком подходе акт клонирования одного репозитория - это все, что требуется для получения рабочей системы в известном состоянии; и это ограничивает вашу зависимость от доступности, согласованности и постоянства удаленных источников только от одного репозитория (и если у вас есть локально или даже нести копию с вами, у вас вообще нет удаленных зависимостей).
Тем не менее, многие люди не беспокоятся и не испытывают никаких проблем, поэтому это не является критическим моментом для большинства людей.
Ответ 3
Было бы полезно, если бы вы разъяснили немного больше, что вы подразумеваете под "любым" компьютером. Это звучит как emacs, уже установленный на компьютере, и вы просто хотите настроить emacs для использования ваших пакетов и настроек. У вас есть физический доступ к машине или сети, из которой вы можете загружать файлы с карты памяти? Если нет, можете ли вы получить доступ к облачному хранилищу?
Моя настройка выглядит следующим образом:
У меня есть машина Windows 7 на работе и Linux Mint дома. У меня есть учетная запись Dropbox, которая содержит все мои файлы и пакеты конфигурации emacs. Эта учетная запись Dropbox синхронизируется с локальной папкой на каждом компьютере, а файл .emacs на каждом компьютере - только одна строка: (load-file "~/Dropbox/dotemacs.el" ) Я часто настраиваю файлы и конфигурации пакетов. Использование Dropbox поддерживает синхронизацию моих настроек на всех компьютерах.
Если вы не можете установить Dropbox, вы можете вручную синхронизировать с облачным хранилищем, например git.
Ответ 4
проверить https://github.com/redguardtoo/elpa-mirror,
создайте свой собственный репозиторий на USB-накопителе, он стабилен, потому что все версии пакета - это версия, которую вы уже используете в течение очень долгого времени.
Это самый быстрый способ, в основном вы можете получить свою установку на любой машине за 1 минуту.
Ответ 5
Как README для моего репо emacs для rails devs говорит, что это так же просто, как нажимать ваше содержимое ~/.emacs.d
на github и на цель машина:
- Установить emacs с помощью homebrew (возможно, вы находитесь на OS X)
brew install emacs --HEAD --use-git-head --cocoa --srgb
- Git клонировать ваше репо на ~/.emacs.d/
- Загрузите emacs
Если есть волшебство, он использует встроенный диспетчер пакетов с ELPA и мармеладом и имеет эту проверку, чтобы проверить, установлены ли пакеты, а если нет, установите их.
Работает для меня и моих ящиков и серверов.