Exportar pacotes instalados do Emacs?


10

Estou usando o emacs 24.4. Eu adicionei um grande número de pacotes instalados por meio da diretiva list-packages Mx em cerca de um ano de uso. Gostaria de exportar minha lista de pacotes instalados para uso em outros lugares. Copiar meu .emacs me dá alguns erros na inicialização, o que faz com que minha memória instale certas coisas. Eu suspeito que eu poderia copiar o .emacs.d, mas isso parece talvez uma má idéia.

Existe um procedimento ou diretiva que eu possa emitir para despejar a lista de pacotes instalados em um arquivo que possa ser usado para obtê-los facilmente em máquinas estrangeiras?



11
Copiar seu .emacs.ddiretório (ou preferencialmente colocá-lo sob controle de versão) geralmente é uma boa idéia. (Ele também é sensato para mudar o nome ~/.emacspara ~/.emacs.d/init.else você decidir fazer isso.)
phils

Respostas:


5

O diretório ~/.emacs.d/elpacontém todos os pacotes instalados com list-packages. Você pode copiar este diretório.

Eu provavelmente também executaria algo como (byte-recompile-directory "~/.emacs.d/elpa" 0 t)( 0significa não perguntar, tsignifica forçar recompilação) para recompilar tudo, porque acredito que haja alguma incompatibilidade de arquivos compilados por byte entre as versões do Emacs.


Eu usei essa estratégia várias vezes desde que fiz essa pergunta. Obrigado pela contribuição.
Sanimalp

4

Eu dei uma olhada no package.elarquivo e encontrei a variável package-alist. Esta parece ser uma lista de todos os pacotes instalados, incluindo os pacotes exigidos pelos pacotes que você instalou.

Se tudo o que você deseja é uma lista dos nomes dos pacotes instalados, o código a seguir gravará os nomes dos pacotes dessa lista no *Messages*buffer.

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

Como não sou programador Lisp, tenho certeza de que alguém pode escrever uma versão muito melhor desse código.

Também comecei a usar o código do pacote de uso com a :ensure topção para instalar todos os meus pacotes em um novo PC.


2

Uma maneira de fazer isso pode ser instalar o pacote, se ainda não estiver instalado, você deve atualizar seu arquivo init e adicionar as seguintes linhas:

(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 a my-packagesvariável e adicione / remova o pacote que você deseja instalar. M-x describe-variable package-activated-listfornecerá a lista do seu pacote atualmente instalado.

Depois disso, a única coisa a compartilhar é o seu arquivo init. Eu espero que isso ajude.


Opa, vejo que você respondeu como despejar a lista. Talvez isso deva ser destacado em sua resposta?
amigos estão dizendo sobre verdammelt
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.