So aktualisieren Sie Pakete, die mit use-package installiert wurden

24

Ich verwende use-package, um Pakete zu installieren und zu konfigurieren (die meisten dieser Pakete sind in melpa). Gibt es eine saubere automatisierte Methode, um all diese Pakete auf dem neuesten Stand zu halten?

Wenn nicht, welcher Workflow ist in diesem Fall am besten?

Hinweis: Eine sehr ähnliche Frage hier mit einer Antwort, aber ich wollte eine Klarstellung „Sie werden noch brauchen , um mit der Installation von Updates“. Ich konnte die Antwort nicht zur Klärung kommentieren, da ich nicht genug Ruf habe.

Jaagrit Sapana
quelle

Antworten:

16

Ich mache das einfach manuell: Führe einen list-packagesTreffer aus U, um verfügbare Upgrades zu markieren, und überprüfe dann, ob es welche gibt, die ich nicht abholen möchte. Dann xaufrüsten. Ich mache das ziemlich regelmäßig und überprüfe oft gleichzeitig, was es Neues gibt. Ich habe ein paar Verbesserungen vorgenommen, um dies zu vereinfachen (siehe unten).

Ich vermute, dass das Upgrade automatisiert werden könnte, aber Sie möchten den Fall in Betracht ziehen, in dem ein Update etwas kaputt macht und Sie müssen es zurücksetzen und dann verhindern, dass Ihr automatisierter Updater es erneut installiert.

Einige Verbesserungen des Paketmenüs:

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

Damit kann ich s newnur sehen, welche Pakete neu verfügbar sind. Und nachdem Uich Upgrades markiert habe, kann ich anach einer Liste der aufgetretenen Buffer suchen, die markiert wurden, für den Fall, dass ich Details darüber erfahren möchte, was sich geändert hat usw.

Glucas
quelle
Danke, die Fragen werden in erster Linie beantwortet. aarbeitete für das Herausfinden von markierten Paketen. Bei s installedjedem der anderen drei verbleibenden Status wird jedoch eine leere Liste zurückgegeben.
Jaagrit Sapana
Welche Emacs-Version verwenden Sie?
Glucas
Ich benutze 24.5.1
Jaagrit Sapana
Ach ok Ich habe es überprüft und der package-menu-filterBefehl ist neu in 25.1, so dass dieser Befehl für Sie nicht funktioniert.
Glucas
Ich mache das jeden Montagmorgen
Ricky Nelson
10

Mit können Sie auto-package-updatePakete automatisch aktualisieren.

Von meinem anderen Beitrag kopiert ( /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))

Bei diesem Setup werden die Pakete jeden 4Tag aktualisiert und die alten Pakete werden entfernt.

cslux
quelle
0

Versuchen Sie epm, den Aktualisierungsprozess sauber zu halten.

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

Es kann den Update-Prozess innerhalb des Emacs-Batch-Prozesses ausführen, ohne die normalen Init.el-Einstellungen zu laden.

lurdan
quelle
0

Es gibt ein sehr empfohlenes Paket namens paradox, das Paketverwaltungsbefehle erweitert. Lesen Sie mehr unter https://github.com/Malabarba/paradox

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

Bei diesem Setup werden die Paketverwendungsstatistiken mithilfe eines separat festgelegten Github-Tokens zurück an das System gesendet und die Pakete im Hintergrund aktualisiert, wenn Sie den paradox-upgrade-packagesan die Schlüssel Ihrer Wahl gebundenen Befehl manuell ausführen .

Lesen Sie in der Inline-Dokumentation der Variablen paradox-github-tokennach, wie Sie sie einrichten.

Heikki
quelle
0

Einfach Listenpakete eingeben und UMSCHALT + U drücken. Es markiert alle installierten Pakete für ein Update.

slk500
quelle
Es ist wohl nicht vollautomatisch.
JeanPierre