Cách cập nhật các gói được cài đặt với gói sử dụng


24

Tôi đang sử dụng use-packageđể cài đặt và định cấu hình các gói (hầu hết các gói này đều ở melpa). Có một cách tự động sạch sẽ để giữ cho tất cả các gói này được cập nhật?

Nếu không, luồng công việc tốt nhất trong trường hợp này là gì?

Lưu ý: Một câu hỏi tương tự ở đây với một câu trả lời, nhưng tôi muốn làm rõ về "Bạn vẫn sẽ cần phải xử lý cài đặt các bản cập nhật". Tôi không thể bình luận về câu trả lời để làm rõ vì tôi không có đủ danh tiếng.

Câu trả lời:


16

Tôi chỉ làm điều này một cách thủ công: chạy list-packageshit Uđể đánh dấu các bản nâng cấp có sẵn, sau đó xem xét để quyết định xem có bất kỳ thứ gì tôi không muốn nhận không. Sau đó xđể nâng cấp. Tôi làm điều này khá thường xuyên và thường kiểm tra những gì mới cùng một lúc. Tôi đã có một vài điều chỉnh để đơn giản hóa việc này (xem bên dưới).

Tôi nghi ngờ việc nâng cấp có thể được tự động hóa, nhưng bạn muốn xem xét trường hợp bản cập nhật phá vỡ thứ gì đó và bạn cần sao lưu nó và sau đó ngăn trình cập nhật tự động của bạn chỉ cài đặt lại.

Một số điều chỉnh menu gói:

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

Với cái này tôi có thể sử dụng s newđể xem những gói nào mới có sẵn. Và sau khi nhấn Uđể đánh dấu các bản nâng cấp, tôi có thể nhấn vào adanh sách bộ đệm xảy ra của những cái đã được đánh dấu, trong trường hợp tôi muốn tìm hiểu chi tiết về những gì đã thay đổi, v.v.


Cảm ơn, các câu hỏi chủ yếu được trả lời. alàm việc để tìm ra các gói được đánh dấu. Tuy nhiên, s installedhoặc bất kỳ trạng thái nào trong ba trạng thái còn lại khác đều trả về một danh sách trống.
Jaagrit Sapana

Bạn đang sử dụng phiên bản nào của Emacs?
glucas

Tôi đang sử dụng 24.5.1
Jaagrit Sapana

À được rồi Tôi đã kiểm tra và package-menu-filterlệnh mới trong 25.1, vì vậy lệnh đó sẽ không hoạt động với bạn.
glucas

Tôi làm điều này mỗi sáng thứ Hai
Ricky Nelson

10

Bạn có thể sử dụng auto-package-updateđể tự động cập nhật các gói.

Sao chép từ bài đăng khác của tôi ( /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))

Với thiết lập đó, các gói sẽ được cập nhật mỗi 4ngày và các gói cũ sẽ bị xóa.


0

Cố gắng epmgiữ cho quá trình cập nhật sạch sẽ.

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

Nó có thể chạy quá trình cập nhật trong quy trình hàng loạt emacs, mà không cần tải các cài đặt init.el bình thường.


0

Có một gói rất được gọi là nghịch lý mở rộng các lệnh quản lý gói. Đọc thêm từ https://github.com/Malabarba/paradox

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

Thiết lập này cung cấp số liệu thống kê sử dụng gói trở lại hệ thống bằng cách sử dụng mã thông báo github được đặt riêng và cập nhật các gói trong nền khi bạn chạy thủ công lệnh paradox-upgrade-packagesbị ràng buộc với các phím bạn chọn.

Đọc tài liệu nội tuyến của biến paradox-github-tokenvề cách thiết lập nó.


0

Chỉ cần nhập danh sách-gói và cài đặt trước SHIFT + U. Nó sẽ đánh dấu tất cả các gói được cài đặt để cập nhật.


Nó được cho là không hoàn toàn tự động.
JeanPierre
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.