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.

Jaagrit Sapana
fonte

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.

glucas
fonte
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.

cslux
fonte
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.

lurdan
fonte
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.

Heikki
fonte
0

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

slk500
fonte
Provavelmente não é totalmente automático.
JeanPierre 29/09