Управление пакетами следующего поколения с straight.el
После долгой и разочаровывающей борьбы за использование package.el
+ Quelpa для управления моими пакетами я укусил пулю и написал свой собственный менеджер пакетов . Он предназначен для полной замены package.el
, предоставляя опыт управления пакетами, который превосходит почти во всех отношениях.
Вы можете прочитать очень обширную документацию, чтобы узнать обо всех ее функциях, но самая важная для этого вопроса - это то, что straight.el
фокусируется на идеальной воспроизводимости . Это означает, что не должно иметь значения, запускаете ли вы Emacs нормально или запускаете его на новом компьютере, и что любые локальные изменения зависят от версии и могут быть возвращены в каноническое состояние. На практике это достигается путем (1) клонирования пакетов в качестве репозиториев Git и предоставления автоматизированных инструментов для управления их состоянием; (2) использование init-файла в качестве единственного источника правды для состояния управления пакетами, при этом в другом месте не хранятся изменяемые данные; и (3) использование необязательных файлов блокировки версий для указания точных версий Git каждого пакета, а также любых репозиториев рецептов иstraight.el
сам.
Для начала вставьте фрагмент начальной загрузки , который будет установлен и активирован straight.el
. Затем, чтобы убедиться, что пакет установлен, просто поместите вызов straight-use-package
в ваш init-файл:
(straight-use-package 'projectile)
Да, это так просто. Не иметь дело с package-refresh-contents
или что-нибудь из этого мусора. Если вы удалите эту форму из вашего файла инициализации и перезапустите Emacs, Projectile больше не будет загружаться (в отличие от package.el
). Это означает, что вам не нужно беспокоиться о том, что ваша конфигурация как-то не работает на новой машине, потому что вы случайно зависели от необъявленных пакетов.
Вы можете устанавливать пакеты где угодно и когда угодно, по всему файлу init (не нужно объявлять их список в одной точке). Конечно, вы также можете просто сделать
(dolist (package '(ace-jump-mode ... zzz-to-char)) (straight-use-package package))
если вы предпочитаете список. Однако я рекомендую вам использовать use-package
для управления конфигурацией вашего пакета. Сначала вы должны установить его:
(straight-use-package 'use-package)
Затем, поскольку straight.el
имеет встроенную интеграцию с use-package
, следующее «просто работает»:
(use-package projectile
:straight t
:init (projectile-mode 1))
После того, как вы написали свой 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
сравниваются другие менеджеры пакетов, ознакомьтесь с обширным разделом сравнений . Но есть еще много документации по всем остальным тоже.
init.el
(например, с помощью git), этот подход также работает (основан наuse-package
): lunaryorn.com/posts/…