Як оновити пакети, встановлені за допомогою use-package


24

Я використовую use-packageдля встановлення та налаштування пакетів (більшість цих пакетів знаходиться в melpa). Чи існує автоматичний спосіб автоматичного оновлення всіх цих пакетів?

Якщо ні, то який найкращий робочий процес у цьому випадку?

Примітка: Дуже схоже запитання тут з відповіддю, але я хотів роз'яснити, «Вам все одно доведеться мати справу з установкою оновлень». Я не міг прокоментувати відповідь на роз'яснення, оскільки у мене недостатньо репутації.

Відповіді:


17

Я просто роблю це вручну: запустіть list-packagesхіт, Uщоб позначити доступні оновлення, а потім перегляньте, щоб визначити, чи є такі, які я не хочу брати. Потім xдля оновлення. Я роблю це досить регулярно і часто перевіряю, що є нового. У мене є кілька виправлень, щоб спростити це (див. Нижче).

Я підозрюю, що оновлення може бути автоматизованим, але ви хочете розглянути той випадок, коли оновлення щось зламає, і вам потрібно вимкнути його, а потім запобігти автоматичному оновленню просто встановити його знову.

Деякі налаштування меню пакета:

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

За допомогою цього я можу s newпросто побачити, які пакунки є нещодавно доступними. І після натискання Uна позначення оновлення я можу потрапити aна список буферів, що трапляються, з тих, що були позначені, на випадок, якщо я захочу перекопатись до деталей того, що змінилося і т.д.


Спасибі, перш за все, відповіді. aпрацювали на пошук маркованих пакетів. Однак s installedабо будь-який з інших трьох статусів повертає порожній список.
Яагріт Сапана

Яку версію Emacs ви використовуєте?
глюкас

Я використовую 24.5.1
Яагріт Сапана

Ну, тоді добре. Я перевірив, і package-menu-filterкоманда нова в 25.1, щоб ця команда не працювала для вас.
глюкас

Я роблю це щоранку в понеділок
Рікі Нельсон

10

Ви можете використовувати auto-package-updateдля автоматичного оновлення пакетів.

Скопійовано з моєї іншої публікації ( /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))

Після цього налаштування пакети оновлюватимуться щодня 4, а старі пакунки будуть видалені.


0

Постарайтеся epmзберегти чистий процес оновлення.

пор. https://github.com/xuchunyang/epm

Він може запускати процес оновлення в пакетному процесі emacs, не завантажуючи звичайні параметри init.el.


0

Існує дуже рекомендований пакет, який називається парадокс, який розширює команди управління пакетом. Детальніше читайте з https://github.com/Malabarba/paradox

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

Ця настройка повертає статистику використання пакунків назад до системи, використовуючи окремо встановлений маркер github та оновлює пакети у фоновому режимі, коли ви вручну запускаєте команду, paradox-upgrade-packagesприв’язану до вибраних вами клавіш.

Прочитайте вбудовану документацію змінної paradox-github-tokenпро те, як її налаштувати.


0

Просто введіть список-пакунки та натисніть SHIFT + U. Він позначатиме всі встановлені пакети для оновлення.


Можливо, це не повністю автоматично.
ЖанП'єр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.