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.

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.


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.


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.


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.


0

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


Ce n'est sans doute pas entièrement automatique.
JeanPierre
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.