Como atualizar pacotes instalados com o pacote de uso


24

Estou usando use-packagepara instalar e configurar pacotes (a maioria desses pacotes está em melpa). Existe uma maneira limpa e automatizada de manter todos esses pacotes atualizados?

Caso contrário, qual é o melhor fluxo de trabalho nesse caso?

Nota: Uma pergunta muito semelhante aqui com uma resposta, mas eu queria um esclarecimento sobre "Você ainda precisará lidar com a instalação de atualizações". Não pude comentar a resposta para esclarecimento, pois não tenho reputação suficiente.

Respostas:


17

Eu apenas faço isso manualmente: execute list-packageshit Upara marcar as atualizações disponíveis e depois revise para decidir se há alguma que eu não queira pegar. Então, xpara atualizar. Faço isso com bastante regularidade e frequentemente checo as novidades ao mesmo tempo. Eu tenho alguns ajustes para simplificar isso (veja abaixo).

Suspeito que a atualização possa ser automatizada, mas você deve considerar o caso em que uma atualização quebra algo e precisa fazer o backup e impedir que o atualizador automático instale-a novamente.

Alguns ajustes no menu do pacote:

(defun package-menu-find-marks ()
  "Find packages marked for action in *Packages*."
  (interactive)
  (occur "^[A-Z]"))

;; Only in Emacs 25.1+
(defun package-menu-filter-by-status (status)
  "Filter the *Packages* buffer by status."
  (interactive
   (list (completing-read
          "Status: " '("new" "installed" "dependency" "obsolete"))))
  (package-menu-filter (concat "status:" status)))

(define-key package-menu-mode-map "s" #'package-menu-filter-by-status)
(define-key package-menu-mode-map "a" #'package-menu-find-marks)

Com isso, posso usar s newapenas para ver quais pacotes estão disponíveis recentemente. E depois de pressionar Upara marcar as atualizações, posso clicar aem uma lista de ocorrências de buffer das que foram marcadas, caso eu queira pesquisar detalhes do que mudou etc.


Obrigado, as perguntas são respondidas principalmente. atrabalhou para descobrir pacotes marcados. No entanto, s installedou qualquer um dos outros três status restantes retorna uma lista vazia.
Jaagrit Sapana

Qual versão do Emacs você está usando?
glucas

Estou usando 24.5.1
Jaagrit Sapana

Ah ok. Eu verifiquei e o package-menu-filtercomando é novo na 25.1, para que o comando não funcione para você.
glucas

Eu faço isso toda segunda-feira de manhã
Ricky Nelson

10

Você pode usar auto-package-updatepara atualizar automaticamente os pacotes.

Copiado da minha outra postagem ( /emacs//a/31903/9972 )

(use-package auto-package-update
   :ensure t
   :config
   (setq auto-package-update-delete-old-versions t
         auto-package-update-interval 4)
   (auto-package-update-maybe))

Com essa configuração, os pacotes serão atualizados todos os 4dias e os pacotes antigos serão removidos.


0

Tente epmmanter o processo de atualização limpo.

cf. https://github.com/xuchunyang/epm

Ele pode executar o processo de atualização no processo em lote do emacs, sem carregar as configurações normais do init.el.


0

Existe um pacote altamente recomendado chamado paradoxo que estende os comandos de gerenciamento de pacotes. Leia mais em https://github.com/Malabarba/paradox

(use-package paradox
  :init
  (setq paradox-github-token t)
  (setq paradox-execute-asynchronously t)
  (setq paradox-automatically-star t))

Essa configuração alimenta as estatísticas de uso do pacote de volta ao sistema usando um token do github definido separadamente e atualiza os pacotes em segundo plano quando você executa manualmente o comando paradox-upgrade-packagesvinculado às chaves de sua escolha.

Leia a documentação embutida da variável paradox-github-tokensobre como configurá-la.


0

Basta digitar list-packages e pressionar SHIFT + U. Ele marcará todos os pacotes instalados para uma atualização.


Provavelmente não é totalmente automático.
JeanPierre 29/09
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.