วิธีอัพเดตแพ็กเกจที่ติดตั้งด้วยแพ็กเกจการใช้งาน


24

ฉันใช้use-packageในการติดตั้งและกำหนดค่าแพ็คเกจ (แพ็คเกจเหล่านี้ส่วนใหญ่อยู่ใน melpa) มีวิธีอัตโนมัติที่ชัดเจนในการรักษาแพ็คเกจเหล่านี้ให้ทันสมัยหรือไม่?

ถ้าไม่เป็นเช่นนี้กระบวนการทำงานที่ดีที่สุดในกรณีนี้คืออะไร?

หมายเหตุ:คำถามที่คล้ายกันมากที่นี่พร้อมคำตอบ แต่ฉันต้องการชี้แจงเกี่ยวกับ "คุณจะต้องจัดการกับการติดตั้งการปรับปรุง" ฉันไม่สามารถออกความเห็นเกี่ยวกับคำตอบสำหรับการชี้แจงเนื่องจากฉันไม่มีชื่อเสียงเพียงพอ

คำตอบ:


16

ฉันทำสิ่งนี้ด้วยตนเอง: 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หรือสถานะที่เหลืออีกสามสถานะจะส่งคืนรายการว่าง
Jaagrit Sapana

คุณใช้ Emacs เวอร์ชั่นใด
ลูกัส

ฉันใช้ 24.5.1
Jaagrit Sapana

อาโอเค. ฉันตรวจสอบแล้วและpackage-menu-filterคำสั่งนั้นใหม่ใน 25.1 ดังนั้นคำสั่งนั้นจะไม่ทำงานสำหรับคุณ
ลูกัส

ฉันทำสิ่งนี้ทุกเช้าวันจันทร์
Ricky Nelson

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ทำให้กระบวนการอัปเดตสะอาดอยู่เสมอ

cf เลย https://github.com/xuchunyang/epm

มันสามารถเรียกใช้กระบวนการอัปเดตภายในกระบวนการแบตช์ emacs โดยไม่ต้องโหลดการตั้งค่า init.el ปกติ


0

มีแพ็คเกจที่แนะนำอย่างยิ่งที่เรียกว่า Paradox ที่ขยายคำสั่งการจัดการแพ็กเกจ อ่านเพิ่มเติมจาก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 มันจะทำเครื่องหมายแพคเกจที่ติดตั้งทั้งหมดสำหรับการปรับปรุง


มันไม่ได้เป็นแบบอัตโนมัติเลย
JeanPierre
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.