Come aggiornare i pacchetti installati con use-package


24

Sto usando use-packageper installare e configurare i pacchetti (la maggior parte di questi pacchetti sono in melpa). Esiste un modo completamente automatizzato per mantenere aggiornati tutti questi pacchetti?

In caso contrario, qual è il miglior flusso di lavoro in questo caso?

Nota: una domanda molto simile qui con una risposta, ma volevo un chiarimento su "Dovrai comunque occuparti dell'installazione degli aggiornamenti". Non ho potuto commentare la risposta per chiarimenti in quanto non ho abbastanza reputazione.

Risposte:


17

Lo faccio solo manualmente: esegui list-packageshit Uper contrassegnare gli aggiornamenti disponibili, quindi rivedi per decidere se ce ne sono alcuni che non voglio raccogliere. Quindi xaggiornare. Lo faccio abbastanza regolarmente e spesso controllo le novità allo stesso tempo. Ho un paio di modifiche per semplificare questo (vedi sotto).

Ho il sospetto che l'aggiornamento potrebbe essere automatizzato, ma vuoi considerare il caso in cui un aggiornamento rompe qualcosa e devi eseguirne il backup e quindi impedire al tuo aggiornamento automatico di installarlo di nuovo.

Alcune modifiche al menu del pacchetto:

(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)

Con questo posso usare s newsolo per vedere quali pacchetti sono appena disponibili. E dopo aver premuto Uper contrassegnare gli aggiornamenti, posso acercare un elenco buffer di quelli contrassegnati, nel caso in cui voglio approfondire i dettagli di ciò che è cambiato, ecc.


Grazie, le domande hanno principalmente una risposta. aha lavorato per scoprire i pacchetti contrassegnati. Tuttavia, s installedo uno qualsiasi degli altri tre stati rimanenti restituisce un elenco vuoto.
Jaagrit Sapana,

Quale versione di Emacs stai usando?
glucas,

Sto usando il 24.5.1
Jaagrit Sapana il

Ah ok. Ho controllato e il package-menu-filtercomando è nuovo in 25.1, quindi quel comando non funzionerà per te.
glucas,

Lo faccio ogni lunedì mattina
Ricky Nelson l'

10

È possibile utilizzare auto-package-updateper aggiornare automaticamente i pacchetti.

Copiato dal mio altro post ( /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))

Con questa configurazione, i pacchetti verranno aggiornati ogni 4giorno e i vecchi pacchetti verranno rimossi.


0

Prova epma mantenere pulito il processo di aggiornamento.

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

Può eseguire il processo di aggiornamento all'interno del processo batch di emacs, senza caricare le normali impostazioni init.el.


0

Esiste un pacchetto altamente raccomandato chiamato paradosso che estende i comandi di gestione dei pacchetti. Maggiori informazioni su https://github.com/Malabarba/paradox

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

Questa configurazione riporta le statistiche sull'utilizzo dei pacchetti al sistema utilizzando un token github impostato separatamente e aggiorna i pacchetti in background quando si esegue manualmente il comando paradox-upgrade-packagesassociato alle chiavi scelte.

Leggi la documentazione in linea della variabile paradox-github-tokensu come impostarla.


0

Basta inserire i pacchetti elenco e premere MAIUSC + U. Contrassegnerà tutti i pacchetti installati per un aggiornamento.


Probabilmente non è completamente automatico.
JeanPierre,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.