Cara memperbarui paket yang diinstal dengan paket penggunaan

24

Saya menggunakan use-packageuntuk menginstal dan mengkonfigurasi paket (sebagian besar paket ini dalam melpa). Apakah ada cara otomatis yang bersih untuk menjaga agar semua paket ini tetap mutakhir?

Jika tidak, apa alur kerja terbaik dalam kasus ini?

Catatan: Pertanyaan yang sangat mirip di sini dengan jawaban, tetapi saya ingin klarifikasi tentang "Anda masih harus berurusan dengan menginstal pembaruan". Saya tidak dapat mengomentari jawaban untuk klarifikasi karena saya tidak memiliki reputasi yang cukup.

Jaagrit Sapana
sumber

Jawaban:

17

Saya hanya melakukan ini secara manual: jalankan list-packageshit Uuntuk menandai upgrade yang tersedia, kemudian tinjau untuk memutuskan apakah ada yang tidak ingin saya ambil. Lalu xuntuk upgrade. Saya melakukan ini dengan cukup teratur, dan sering memeriksa apa yang baru pada saat yang sama. Saya punya beberapa penyesuaian untuk menyederhanakan ini (lihat di bawah).

Saya menduga peningkatan dapat dilakukan secara otomatis, tetapi Anda ingin mempertimbangkan kasus di mana pembaruan memecah sesuatu dan Anda harus mencadangkannya dan kemudian mencegah pembaru otomatis Anda hanya menginstalnya lagi.

Beberapa menu tweak paket:

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

Dengan ini saya dapat menggunakan s newhanya untuk melihat paket apa yang baru tersedia. Dan setelah menekan Uuntuk menandai peningkatan, saya dapat amenemukan daftar buffer yang ditandai, jika saya ingin menggali detail apa yang berubah dll.

glukas
sumber
Terima kasih, pertanyaan utamanya dijawab. abekerja untuk mengetahui paket yang ditandai. Namun, s installedatau salah satu dari tiga status lainnya mengembalikan daftar kosong.
Jaagrit Sapana
Versi Emacs apa yang Anda gunakan?
glucas
Saya menggunakan 24.5.1
Jaagrit Sapana
Ah baiklah. Saya memeriksa dan package-menu-filterperintah ini baru dalam 25.1, sehingga perintah itu tidak akan bekerja untuk Anda.
glucas
Saya melakukan ini setiap Senin pagi
Ricky Nelson
10

Anda dapat menggunakan auto-package-updateuntuk memperbarui paket secara otomatis.

Disalin dari pos saya yang lain ( /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))

Dengan pengaturan itu, paket akan diperbarui setiap 4hari, dan paket lama akan dihapus.

cslux
sumber
0

Cobalah epmuntuk menjaga proses pembaruan tetap bersih.

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

Itu dapat menjalankan proses pembaruan dalam proses batch emacs, tanpa memuat pengaturan init.el normal.

lurdan
sumber
0

Ada paket yang sangat direkomendasikan yang disebut paradox yang memperluas perintah manajemen paket. Baca lebih lanjut dari https://github.com/Malabarba/paradox

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

Pengaturan ini mengumpankan statistik penggunaan paket kembali ke sistem menggunakan token github yang diatur secara terpisah dan memperbarui paket di latar belakang saat Anda menjalankan perintah yang paradox-upgrade-packagesterikat secara manual ke kunci pilihan Anda.

Baca dokumentasi sebaris variabel paradox-github-tokententang cara mengaturnya.

Heikki
sumber
0

Cukup masukkan daftar-paket dan pres SHIFT + U. Ini akan menandai semua paket yang diinstal untuk pembaruan.

slk500
sumber
Ini bisa dibilang tidak sepenuhnya otomatis.
JeanPierre