Cómo actualizar paquetes instalados con use-package


24

Estoy usando use-packagepara instalar y configurar paquetes (la mayoría de estos paquetes están en melpa). ¿Existe una manera limpia y automatizada de mantener todos estos paquetes actualizados?

Si no, ¿cuál es el mejor flujo de trabajo en este caso?

Nota: Una pregunta muy similar aquí con una respuesta, pero quería una aclaración sobre "Aún tendrá que lidiar con la instalación de actualizaciones". No pude comentar la respuesta para aclararme, ya que no tengo suficiente reputación.

Respuestas:


17

Solo hago esto manualmente: ejecuta list-packageshit Upara marcar las actualizaciones disponibles, luego reviso para decidir si hay alguna que no quiera recoger. Luego xpara actualizar. Hago esto con bastante regularidad y, a menudo, verifico las novedades al mismo tiempo. Tengo un par de ajustes para simplificar esto (ver más abajo).

Sospecho que la actualización podría automatizarse, pero debe considerar el caso en el que una actualización rompe algo y necesita retrocederlo y luego evitar que su actualizador automático lo instale nuevamente.

Algunos ajustes del menú del paquete:

(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 esto puedo usar s newpara ver qué paquetes están disponibles recientemente. Y después de Upresionar apara marcar las actualizaciones, puedo presionar para que aparezca una lista de búfer de las que se marcaron, en caso de que desee profundizar en los detalles de lo que cambió, etc.


Gracias, las preguntas se responden principalmente. atrabajó para descubrir paquetes marcados. Sin embargo, s installedo cualquiera de los otros tres estados restantes devuelve una lista vacía.
Jaagrit Sapana

¿Qué versión de Emacs estás usando?
glucas

Estoy usando 24.5.1
Jaagrit Sapana

Ah ok Lo comprobé y el package-menu-filtercomando es nuevo en 25.1, por lo que ese comando no funcionará para usted.
glucas

Hago esto todos los lunes por la mañana
Ricky Nelson

10

Puede usar auto-package-updatepara actualizar paquetes automáticamente.

Copiado de mi otra publicación ( /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 esa configuración, los paquetes se actualizarán todos los 4días y se eliminarán los paquetes antiguos.


0

Intenta epmmantener limpio el proceso de actualización.

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

Puede ejecutar el proceso de actualización dentro del proceso por lotes de emacs, sin cargar la configuración normal de init.el.


0

Hay un paquete altamente recomendado llamado paradoja que extiende los comandos de administración de paquetes. Lea más en https://github.com/Malabarba/paradox

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

Esta configuración retroalimenta las estadísticas de uso del paquete al sistema utilizando un token github establecido por separado y actualiza los paquetes en segundo plano cuando ejecuta manualmente el comando paradox-upgrade-packagesvinculado a las teclas de su elección.

Lea la documentación en línea de la variable paradox-github-tokensobre cómo configurarla.


0

Simplemente ingrese list-packages y presione SHIFT + U. Marcará todos los paquetes instalados para una actualización.


Podría decirse que no es completamente automático.
JeanPierre
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.