Como o emacs gerencia seus pacotes?


9

Instalei o auctex no centro de software do Ubuntu e, em seguida, instalei uma versão mais recente do auctex no emacs.

Desinstalei o auctex instalado pelo centro de software do Ubuntu. Eu descobri que não desinstalava o que eu instalei do emacs.

Como o emacs gerencia seus pacotes?

Não há interferência entre o emacs e o Ubuntu no gerenciamento da instalação e desinstalação dos pacotes emacs?

Se estou certo, há alguns anos atrás, não havia como instalar pacotes no emacs?

Obrigado.


2
Na IMO, essa questão é ampla demais para as perguntas e respostas da SE. Melhor ler o documento do Emacs e postar aqui uma pergunta específica sobre uma parte específica do gerenciamento de pacotes que não está clara para você. Não devemos reproduzir o documento do Emacs aqui. E se há algo importante que está faltando a partir do doc Emacs, em seguida, você deve arquivar um pedido de relatório / realce bug: M-x report-emacs-bug. As pessoas que responderem a essa pergunta aqui estariam melhor contribuindo com os documentos do Emacs, se as informações estiverem ausentes. NA MINHA HUMILDE OPINIÃO.
Desenhou

3
Tim: Caso haja alguma confusão, um "pacote" do Emacs e um "pacote" do Ubuntu / Debian são coisas totalmente independentes. Quaisquer Emacs relacionados pacote Debian não tem nenhuma conexão com o gerenciador de pacotes package.el embutido no Emacs 24.
phils

1
@ Tim, Não se esqueça de aceitar uma resposta ou informe-nos se as respostas não forem satisfatórias.
Malabarba 15/10

1
@Drew A questão é mais sobre a interação entre os pacotes Ubuntu e Emacs, portanto, não seria abordada nos documentos do Emacs. E as respostas também discutem pacotes de terceiros que os documentos não cobrem, portanto esse é provavelmente o melhor lugar para fazer essas perguntas.
Brian Burns

Respostas:


11

Como o páprica disse, o Emacs usa load-pathpara pesquisar os elisparquivos disponíveis da lista ( .elc, .el)

O load-pathé procurado para o primeiro pacote que coincida quando ele está sendo exigido. Se várias cópias de um pacote estiverem instaladas, a primeira será carregada.

O gerenciador de pacotes de distribuição não pode instalar na mesma fonte que o package-installfaz, já que um é de todo o sistema e o outro é específico do usuário.

Fontes do pacote

Integrado e específico da distribuição

Distro Package Manager

Os gerenciadores de pacotes distro fornecem uma seleção de pacotes emacs que podem ser instalados. Na minha experiência, esses geralmente estão entre os pacotes mais populares / amplamente utilizados. Antes do desenvolvimento package.eldisso, era a maneira mais fácil de obter os pacotes. (Mais fácil por executar apenas do apt-get install <package>que usar controle de versão ou download direto.

Os pacotes instalados por meio do gerenciador de pacotes de distribuição são instalados no /usr/local/share/emacs/site-lisp/padrão load-pathe serão ocultados por load-pathadições específicas do usuário .

Package.el

package.elfoi incluído pela primeira vez Emacs 24. Esta versão é compatível, Emacs 23mas precisa ser instalada manualmente, os pacotes recuperados por ela podem ou não ser compatíveis Emacs 23.

package.elfornece um repositório de pacotes navegável para o Emacs. Por padrão, apenas o Elparepositório está configurado, mas o acesso ao MELPA e Marmelade pode ser adicionado:

(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))

Isso fornece acesso a um conjunto muito maior de pacotes.

Por padrão, package.elinstala pacotes para ~/.emacs.d/elpae quando (package-initialize)é chamado esse diretório será colocado mais próximo da frente do load-patharquivo, resultando em pacotes com precedência sobre os instalados pelo gerenciador de pacotes de distribuição.

Git / Bzr / hg / ... + EmacsWiki

Pacotes controlados por versão podem ser recuperados manualmente de seu repositório através da clonagem. Alguns também fornecem versões compactadas que podem ser baixadas diretamente.

Os arquivos EmacsWiki Elisp também podem ser baixados, embora geralmente sejam arquivos únicos, e não diretórios.

Depois que o pacote for recuperado, verifique se a pasta de destino está na sua load-pathe estará disponível para uso.

Gerenciamento de pacotes de terceiros

Essas ferramentas fornecem wrappers ou funcionalidades adicionais acima para centralizar o gerenciamento de pacotes. Eles foram projetados com a configuração compartilhada em mente para garantir que todas as suas máquinas tenham os mesmos pacotes disponíveis.

El-Get

El-Get mantém uma lista de receitas que lhe permitem obter os pacotes usando package.el, git, emacswikicomo fontes (entre outros). Ele também fornece funções para garantir que os pacotes estejam atualizados, gerenciar o carregamento (adiado ou imediato) e armazenar a personalização específica do pacote em arquivos carregados automaticamente quando o pacote está required.

Barril

O Cask foi projetado para gerenciamento de projetos no / para Emacs. Ele usa um caskarquivo para manter uma lista de dependências (outros pacotes) necessárias para usar o pacote e baixa os pacotes ausentes para garantir que tudo seja carregado com êxito.

Ele pode ser usado para gerenciar configurações de pacotes locais tratando o seu ~/.emacs.dcomo um projeto e iniciando (cask-initialize)a inicialização.

straight.el

straight.elfoi desenvolvido para pessoas que desejam fazer alterações locais em seus pacotes e, possivelmente, contribuir com essas alterações no upstream. Ele extrai receitas do MELPA , GNU ELPA e EmacsMirror , ou permite que você especifique suas próprias. Ele também suporta a criação de um arquivo de bloqueio de revisão para máxima reprodutibilidade, entre muitos outros recursos.

Pacote de uso

O Use-Package foi projetado principalmente como uma ferramenta de gerenciamento de configuração do emacs. Ele fará o download dos package.elpacotes necessários , mas não possui mecanismos internos para acessar outras fontes. Permite carregamento diferido de pacotes e personalização adiada. Isso melhora a inicialização do emacs enquanto diminui o uso inicial dos pacotes (mas, se não os estiver usando em uma determinada sessão, haverá apenas um ganho líquido).


O elpakit também está disponível, ele executa um trabalho semelhante ao barril, mas sem os bits não elisp.
Ferrier nic

@nicferrier Você poderia elaborar como usá-lo para o gerenciamento de pacotes? (Eu posso ver como usá-lo para os pacotes existentes, mas Cask também permite fontes arbitrários sejam adicionados se eu lê-lo corretamente)
Jonathan Sanguessuga-Pepin

O well elpakit permite principalmente que você faça duas coisas: criar repositórios em seu disco como pacotes (também cria arquivos de pacotes a partir de coleções desses) e criar pacotes que dependem de outros pacotes automaticamente. Mx elpakit-package-list-buf cria um buffer com uma lista de seus pacotes elpa, que você pode usar para criar outro pacote que depende dos pacotes elpa selecionados.
Ferrier nic

Eu acho que os pacotes instalados através do gerenciador de pacotes distro entram /usr/share/emacs/site-lisp, não /usr/local/share...desde que os localdirs são destinados a instalações não distro.
JeanPierre

10

O Emacs usa o load-path, que é essencialmente uma lista de diretórios que ele deve procurar por arquivos Lisp. Se um pacote estiver disponível no load-path, ele será instalado .

Não há interface entre o gerenciador de pacotes Debian / Ubuntu e o gerenciador de pacotes Emacs (package.el). O primeiro instala os pacotes Emacs de maneira abrangente em todo o sistema (disponível para todos os usuários do computador), enquanto o último instala um pacote por padrão no diretório inicial. Teoricamente, você pode usar as duas fontes para instalar pacotes. No entanto, aconselho contra esta prática: Você pode enfrentar alguns problemas ao instalar o mesmo pacote de ambas as fontes.

A lista de pacotes Emacs que você pode instalar através do gerenciador de pacotes Debian / Ubuntu é muito mais limitada quando comparada com ELPA / MELPA / ..., porque cada pacote deve ser preparado especificamente para o Debian / Ubuntu. Em outras palavras: pacote no ELPA! = Pacote no Debian.


Quando ele perguntou sobre alguns anos atrás eu acho que ele estava falando sobre Elpa
Malabarba

@ Malabarba: De fato, eu não entendi. Eu removi a frase irrelevante.
paprika

1
Esta resposta é verdade para outros gerenciadores de pacotes distro bem como yum (Fedora), pacman (Arch) etc.
Vamsi

E você está perdendo o marmelade-repo da lista. O repositório não-GNU original.
Ferrier nic
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.