Я новичок в Emacs (пользуюсь им около 2 недель и люблю его). Когда я обновляю и расширяю свой ~/.emacs.d/init.el
файл, то, что я там пишу, зависит от определенных пакетов, которые я установил из MELPA M-x package-install
, от .el
файлов, которые я написал сам и т. Д.
Мой вопрос: должен ли я в будущем переключать компьютеры, например, каков наилучший способ беспрепятственно получить ту же среду Emacs на новом компьютере, что и сейчас?
init.el
(например, с помощью git), этот подход также работает (основан наuse-package
): lunaryorn.com/posts/…~/.emacs.d
каталог, поэтому используйте любой метод, который вы предпочитаете, для синхронизации между компьютерами. (например, Github-репозиторий, или папка Dropbox, или все, что вам больше подходит).Ответы:
Правильное решение - использовать
straight.el
менеджер пакетов, который я написал для решения этой проблемы. Вы можете найти более подробную информацию об этом в другом ответе на этот вопрос .Этот ответ, который был написан за несколько месяцев до того, как я начал работать
straight.el
, ранее описывал строго худший способ достижения частичного решения. Этот подход кратко описан ниже; Я больше не рекомендую это.Даже если вы не хотите использовать
straight.el
, вы должны по крайней мере принятьuse-package
. (Не то, чтобы оба были взаимоисключающими - я считаю, что самая чистая настройка получается при использовании обоих.)Начните с определения списка пакетов в вашем init-файле:
Затем установите их автоматически:
Если вы сохраните ваш
init.el
файл под контролем версий, то при синхронизации с другим компьютером ваши пакеты будут установлены автоматически. Конечно, установленные версии будут совершенно другими, и в результате ваша конфигурация не будет работать сразу после установки. Это фундаментальный недостатокpackage.el
и одна из причин, почему этот подход плох. Смотрите сноваstraight.el
. Также обратите внимание, что приведенный выше код отделяет ваш список пакетов от вашей конфигурации для этих пакетов, что усложняет отслеживание вещей в вашем init-файле. Это еще один серьезный недостаток. Смотрите сноваuse-package
.источник
package.el
для обновления пакетов, в вашем репозитории будут внесены неустановленные изменения, и вам придется сделать обязательство включить обновления пакетов.M-x list-packages RET U
.straight.el
только для установки пакетов Emacs. Nix - отличная идея, но, насколько я знаю, она не оптимизирована для разработки пакетов Emacs (исправьте меня, если я ошибаюсь) . Если вы используете системный менеджер пакетов для установки пакетов Emacs, вы не сможете просто отредактировать их исходный код, а затем зафиксировать и отправить свои изменения в апстрим. В прошлый раз, когда я смотрел на конфигурацию Nix для пакетов Emacs, она казалась чересчур сложной и в целом уступалаstraight.el
опыту разработки. Но все, что плывет на твоей лодке.Если вы используете use-package , вы можете перемещать этот файл с компьютера на компьютер, и когда Emacs запускается, пока у вас есть доступ в Интернет, он будет извлекать пакеты и настраивать их.
Сначала настройте библиотеку пакетов:
А затем начальная загрузка
use-package
:Теперь вместо настройки Emacs и установки пакетов используйте их
use-package
для установки и настройки. Например, для некоторых из моих настроек руля:источник
init.el
) проходит, но есть еще много чего. Например, это не будет портировать dabbrev-файлы, или ваши пользовательские фрагменты, или что-то другое.:ensure t
кuse-package
объявлению или установитьuse-package-always-ensure
вt
. В противном случае он не будет автоматически установлен в другой системе при копировании конфигурации.Управление пакетами следующего поколения с
straight.el
После долгой и разочаровывающей борьбы за использование
package.el
+ Quelpa для управления моими пакетами я укусил пулю и написал свой собственный менеджер пакетов . Он предназначен для полной заменыpackage.el
, предоставляя опыт управления пакетами, который превосходит почти во всех отношениях.Вы можете прочитать очень обширную документацию, чтобы узнать обо всех ее функциях, но самая важная для этого вопроса - это то, что
straight.el
фокусируется на идеальной воспроизводимости . Это означает, что не должно иметь значения, запускаете ли вы Emacs нормально или запускаете его на новом компьютере, и что любые локальные изменения зависят от версии и могут быть возвращены в каноническое состояние. На практике это достигается путем (1) клонирования пакетов в качестве репозиториев Git и предоставления автоматизированных инструментов для управления их состоянием; (2) использование init-файла в качестве единственного источника правды для состояния управления пакетами, при этом в другом месте не хранятся изменяемые данные; и (3) использование необязательных файлов блокировки версий для указания точных версий Git каждого пакета, а также любых репозиториев рецептов иstraight.el
сам.Для начала вставьте фрагмент начальной загрузки , который будет установлен и активирован
straight.el
. Затем, чтобы убедиться, что пакет установлен, просто поместите вызовstraight-use-package
в ваш init-файл:Да, это так просто. Не иметь дело с
package-refresh-contents
или что-нибудь из этого мусора. Если вы удалите эту форму из вашего файла инициализации и перезапустите Emacs, Projectile больше не будет загружаться (в отличие отpackage.el
). Это означает, что вам не нужно беспокоиться о том, что ваша конфигурация как-то не работает на новой машине, потому что вы случайно зависели от необъявленных пакетов.Вы можете устанавливать пакеты где угодно и когда угодно, по всему файлу init (не нужно объявлять их список в одной точке). Конечно, вы также можете просто сделать
если вы предпочитаете список. Однако я рекомендую вам использовать
use-package
для управления конфигурацией вашего пакета. Сначала вы должны установить его:Затем, поскольку
straight.el
имеет встроенную интеграцию сuse-package
, следующее «просто работает»:После того, как вы написали свой init-файл для установки необходимых пакетов, запустите,
M-x straight-freeze-versions
чтобы сохранить файл блокировки версии~/.emacs.d/straight/versions/default.el
. Вы должны держать этот файл под контролем версий, так как он позволитstraight.el
проверять правильные версии всех ваших пакетов при первом запуске Emacs на новой машине. (Вы можете вручную вернуться к версиям, указанным в файле блокировки, используяM-x straight-thaw-versions
.)Чтобы поддержать идею локальных точечных файлов, которые я упоминал в моем другом ответе ,
straight.el
предлагается система профилей . Я все еще рекомендую использовать символические ссылки для ваших файлов точек (в данном случае,init.el
ваш локальный файл инициализации, если это применимо, и файл блокировки версии, если вы хотите использовать один).Если вам интересно, как
straight.el
сравниваются другие менеджеры пакетов, ознакомьтесь с обширным разделом сравнений . Но есть еще много документации по всем остальным тоже.источник
Вы можете использовать бочку для управления своими пакетами. Используйте git / github для управления исходным кодом и синхронизации ваших файлов emacs.
источник