É possível usar MELPA e MELPA-estável ao mesmo tempo?

29

Eu uso o melpa-stable como um repositório de pacotes adicional, mas um dos pacotes que eu gosto de usar (icicles) não está disponível no melpa-stable. Existe alguma maneira de configurar o package.el para usar normalmente o melpa-stable, mas use o melpa para um subconjunto específico de pacotes?

Timo Geusch
fonte
1
Atualize para o emacs 24.4 ;-)
Malabarba
@Malabarba, que é definitivamente sobre os cartões ...
Timo Geusch
Também não encontro iciclesmelpa.
user650654 23/08

Respostas:

34

Use a opção package-archive-prioritiesque foi feita para esse mesmo objetivo. Para preferir MELPA Stable sobre MELPA, adicione o seguinte ao seu arquivo init:

(setq package-archives
      '(("GNU ELPA"     . "https://elpa.gnu.org/packages/")
        ("MELPA Stable" . "https://stable.melpa.org/packages/")
        ("MELPA"        . "https://melpa.org/packages/"))
      package-archive-priorities
      '(("MELPA Stable" . 10)
        ("GNU ELPA"     . 5)
        ("MELPA"        . 0)))

Quanto maior o número, maior a prioridade de um arquivo compactado. Para qualquer pacote existente em vários arquivos, o gerenciador de pacotes do Emacs escolhe o pacote do arquivo com a maior prioridade e ignora os pacotes em outros arquivos, mesmo que o número da versão seja maior. Se o pacote existe em dois arquivos da mesma prioridade, as vitórias maior número de versão, e, finalmente, eu acho que a ordem em package-archives.

Eu recomendo atribuir explicitamente uma prioridade a todos os arquivos, incluindo o arquivo GNU ELPA padrão, para evitar ambiguidades. Embora os arquivos que não estão package-archive-prioritiescom a prioridade padrão 0, é muito fácil esquecer isso.

package-archive-priorities foi introduzido no Emacs 25.1, para versões anteriores, veja a resposta antiga abaixo:


No Emacs 24, não é possível padronizar o MELPA Stable e usar o MELPA apenas para pacotes específicos de uma maneira geral. Sem nenhum pacote de personalização, o padrão é o arquivo que fornece a versão mais alta , que é MELPA. Não há interface para mudar isso.

No entanto, a partir do Emacs 24.4, a nova opção package-pinned-packagespermite fixar pacotes individuais em arquivos, mas isso só permite implementar o inverso de seus requisitos: Padrão para MELPA e usar MELPA Stable para pacotes específicos.

Portanto, atualmente sua única opção é preencher package-pinned-packagestodos os pacotes que você gostaria de usar, manualmente ou com algum código Emacs Lisp. Observe que package-pinned-packagesdeve ser definido antes da chamada, package-refresh-contentsporque a fixação é avaliada ao criar o índice do pacote , e não ao instalar pacotes.

Uma solução a longo prazo seria M-x report-emacs-bugpedir aos desenvolvedores do Emacs que implementassem algum tipo de recurso de “arquivo padrão” ou pedir ao mantenedor de pingentes que fizesse lançamentos com tags apropriadas para que o MELPA Stable possa criar pacotes estáveis ​​para ele. Porém, nem isso pode ser fácil, já que o primeiro exige alterações maiores no package.el e o segundo, que os pingentes são movidos do EmacsWiki para um repositório VCS adequado com tags, que eu presumo que seu mantenedor não está disposto a fazer, por se fossem, teriam feito isso há muito tempo.

lunaryorn
fonte
0

Aqui você tem uma discussão sobre o uso de ambos os repositórios em paralelo, portanto isso deve ser possível com 24.4; você tentou, por exemplo, com um defun atualizar a lista de repositórios, exigir paradoxo e finalmente voltar à lista de repositórios original?

csantosb
fonte