Експорт встановлених пакетів Emacs?


10

Я використовую emacs 24.4. Я додав велику кількість встановлених пакетів через директиву списку пакунків Mx протягом приблизно року використання. Я хотів би експортувати свій список встановлених пакетів для використання в інше місце. Копіювання моїх .emacs дає мені деякі помилки під час запуску, що підключає мою пам'ять до встановлення певних речей. Я підозрюю, що міг скопіювати .emacs.d, але це здається, може, поганою ідеєю.

Чи є процедура чи директива, яку я можу видати, щоб скинути список встановлених пакетів у файл, який можна використовувати для легкого їх отримання на іноземних машинах?



1
Копіювання .emacs.dкаталогу (або, бажано, переведення його під контроль версій), як правило, є хорошою ідеєю. (Це також доцільно перейменувати ~/.emacsв , ~/.emacs.d/init.elякщо ви вирішите зробити це.)
Филс

Відповіді:


5

Каталог ~/.emacs.d/elpaмістить усі пакунки, встановлені з list-packages. Ви можете скопіювати цей каталог.

Я, мабуть, також запустив щось на кшталт (byte-recompile-directory "~/.emacs.d/elpa" 0 t)( 0означає не запитувати, tозначає примусити перекомпілювати), щоб байт-перекомпілювати все, тому що я вважаю, що між версіями Emacs є деякі несумісність файлів, складених байтами.


Я використовував цю стратегію кілька разів з моменту задачі цього питання. Дякуємо за вклад.
sanimalp

4

Я переглянув package.elфайл і знайшов змінну package-alist. Здається, це список усіх встановлених пакетів, включаючи пакунки, необхідні для встановлених пакунків.

Якщо все, що вам потрібно, це список встановлених імен пакетів, наступний код випише імена пакетів із цього списку в *Messages*буфер.

(dolist (p1 (sort (mapcar 'symbol-name (mapcar 'car package-alist)) 'string<))
  (message "%s" p1))

Я не програміст Lisp, тому я впевнений, що хтось може написати набагато кращу версію цього коду.

Я також почав використовувати код пакета use з :ensure tопцією, щоб встановити всі мої пакети на новий ПК.


2

Одним із способів цього може стати встановлення пакету, якщо він ще не встановлений, слід оновити файл init та додати ці рядки:

(defvar my-packages
  '(color-theme db-pg db kv magit-push-remote magit-tramp
                magit git-rebase-mode git-commit-mode pg
                pretty-lambdada projectile pkg-info epl dash
                python-mode rich-minority s yasnippet yasnippet-bundle
                use-package key-chord undo-tree guide-key move-text
                openwith ack ag aggressive-indent nginx-mode multiple-cursors
                smartparens with-editor haskell-mode)
  "A list of packages to ensure are installed at launch.")

(defun my-packages-installed-p ()
  (loop for p in my-packages
        when (not (package-installed-p p)) do (return nil)
        finally (return t)))

(unless (my-packages-installed-p)
  ;; check for new packages (package versions)                                  
  (package-refresh-contents)
  ;; install the missing packages                                                                               
  (dolist (p my-packages)
    (when (not (package-installed-p p))
      (package-install p))))

Змініть my-packagesзмінну та додайте / видаліть пакет, який ви хочете встановити. M-x describe-variable package-activated-listнадасть вам список встановленого вами пакету.

Після цього єдине, чим слід поділитися, це ваш файл init. Сподіваюся, це допоможе.


На жаль, я бачу, що ви відповіли, як скинути список. Можливо, це слід зробити більш помітним у вашій відповіді?
verdammelt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.