Exportar paquetes instalados de Emacs?


10

Estoy usando emacs 24.4. He agregado una gran cantidad de paquetes instalados a través de la directiva Mx list-packages durante aproximadamente un año de uso. Me encantaría exportar mi lista de paquetes instalados para usar en otro lugar. Copiar mi .emacs me da algunos errores al iniciar, lo que activa mi memoria para instalar ciertas cosas. Sospecho que podría copiar el .emacs.d, pero parece una mala idea.

¿Existe algún procedimiento o directiva que pueda emitir para volcar la lista de paquetes instalados en un archivo que pueda usarse para llevarlos fácilmente a máquinas extranjeras?



1
Copiar su .emacs.ddirectorio (o preferiblemente ponerlo bajo control de versiones) generalmente es una buena idea. (También es razonable para cambiar el nombre ~/.emacsa ~/.emacs.d/init.elsi decide hacerlo.)
PHILS

Respuestas:


5

El directorio ~/.emacs.d/elpacontiene todos los paquetes instalados con list-packages. Puede copiar este directorio encima.

Probablemente también ejecute algo como (byte-recompile-directory "~/.emacs.d/elpa" 0 t)( 0significa no preguntar, tsignifica forzar recompilación) para compilar todo en bytes porque creo que hay cierta incompatibilidad de archivos compilados en bytes entre las versiones de Emacs.


He usado esta estrategia varias veces desde que hice esta pregunta. Gracias por el aporte.
sanimalp

4

Eché un vistazo al package.elarchivo y encontré la variable package-alist. Esto parece ser una lista de todos los paquetes instalados, incluidos los paquetes requeridos por los paquetes que ha instalado.

Si todo lo que desea es una lista de los nombres de paquetes instalados, el siguiente código escribirá los nombres de los paquetes de esta lista en el *Messages*búfer.

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

No soy un programador de Lisp, así que estoy seguro de que alguien puede escribir una versión mucho mejor de este código.

También comencé a usar el código de paquete de uso con la :ensure topción para instalar todos mis paquetes en una nueva PC.


2

Una forma de hacerlo podría ser instalar el paquete si aún no está instalado, debe actualizar su archivo de inicio y agregar esas líneas:

(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))))

Modifique la my-packagesvariable y agregue / elimine el paquete que desea instalar. M-x describe-variable package-activated-listle dará la lista de su paquete actualmente instalado.

Después de eso, lo único que puedes compartir es tu archivo de inicio. Espero que sea de ayuda.


Vaya, veo que respondiste cómo volcar la lista. Quizás eso debería hacerse más prominente en su respuesta?
verdammelt
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.