Comment mettre à jour les packages installés avec use-package

24

J'utilise use-packagepour installer et configurer des packages (la plupart de ces packages sont dans melpa). Existe-t-il un moyen propre et automatisé de maintenir tous ces packages à jour?

Sinon, quel est le meilleur flux de travail dans ce cas?

Remarque: Une question très similaire ici avec une réponse, mais je voulais une clarification sur "Vous devrez toujours gérer l'installation des mises à jour". Je n'ai pas pu commenter la réponse pour des éclaircissements car je n'ai pas assez de réputation.

Jaagrit Sapana
la source

Réponses:

17

Je fais juste cela manuellement: exécutez list-packageshit Upour marquer les mises à niveau disponibles, puis examinez pour décider s'il y en a que je ne veux pas ramasser. Ensuite, xpour mettre à niveau. Je le fais assez régulièrement et vérifie souvent les nouveautés en même temps. J'ai quelques réglages pour simplifier cela (voir ci-dessous).

Je soupçonne que la mise à niveau pourrait être automatisée, mais vous voulez considérer le cas où une mise à jour casse quelque chose et vous devez la annuler, puis empêcher votre programme de mise à jour automatisé de simplement l'installer à nouveau.

Quelques ajustements du menu du package:

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

Avec cela, je peux utiliser s newpour voir quels packages sont nouvellement disponibles. Et après avoir frappé Upour marquer les mises à niveau, je peux arechercher une liste de tampons de celles qui ont été marquées, au cas où je voudrais creuser les détails de ce qui a changé, etc.

glucas
la source
Merci, les questions sont principalement répondues. atravaillé pour trouver des paquets marqués. Cependant, s installedou l'un des trois autres statuts restants renvoie une liste vide.
Jaagrit Sapana
Quelle version d'Emacs utilisez-vous?
glucas
J'utilise 24.5.1
Jaagrit Sapana
Ah ok. J'ai vérifié et la package-menu-filtercommande est nouvelle dans 25.1, donc cette commande ne fonctionnera pas pour vous.
glucas
Je fais cela tous les lundis matin
Ricky Nelson
10

Vous pouvez utiliser auto-package-updatepour mettre à jour automatiquement les packages.

Copié de mon autre article ( /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))

Avec cette configuration, les packages seront mis à jour tous les 4jours et les anciens packages seront supprimés.

cslux
la source
0

Essayez epmde garder le processus de mise à jour propre.

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

Il peut exécuter le processus de mise à jour dans le processus batch emacs, sans charger les paramètres init.el normaux.

lurdan
la source
0

Il existe un package hautement recommandé appelé paradoxe qui étend les commandes de gestion des packages. En savoir plus sur https://github.com/Malabarba/paradox

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

Cette configuration renvoie les statistiques d'utilisation des packages au système à l'aide d'un jeton github défini séparément et met à jour les packages en arrière-plan lorsque vous exécutez manuellement la commande paradox-upgrade-packagesliée à vos clés de choix.

Lisez la documentation en ligne de la variable paradox-github-tokensur la façon de la configurer.

Heikki
la source
0

Entrez simplement les packages de liste et pressez SHIFT + U. Il marquera tous les packages installés pour une mise à jour.

slk500
la source
Ce n'est sans doute pas entièrement automatique.
JeanPierre