Jak zaktualizować pakiety zainstalowane za pomocą pakietu use

24

Używam use-packagedo instalowania i konfigurowania pakietów (większość tych pakietów jest w Melpa). Czy istnieje czysty automatyczny sposób aktualizowania wszystkich tych pakietów?

Jeśli nie, jaki jest najlepszy przepływ pracy w tym przypadku?

Uwaga: Bardzo podobne pytanie tutaj z odpowiedzią, ale chciałem się wyjaśnień w sprawie „Będziesz nadal muszą radzić sobie z instalowaniem aktualizacji”. Nie mogłem skomentować odpowiedzi w celu wyjaśnienia, ponieważ nie mam wystarczającej reputacji.

Jaagrit Sapana
źródło

Odpowiedzi:

17

Po prostu robię to ręcznie: list-packagesnaciśnij hit, Uaby zaznaczyć dostępne ulepszenia, a następnie sprawdź, czy są jakieś, których nie chcę odbierać. Następnie, xaby zaktualizować. Robię to dość regularnie i często sprawdzam, co nowego w tym samym czasie. Mam kilka poprawek, aby to uprościć (patrz poniżej).

Podejrzewam, że aktualizacja może być zautomatyzowana, ale chcesz wziąć pod uwagę przypadek, w którym aktualizacja coś psuje i musisz ją wycofać, a następnie uniemożliwić automatycznej aktualizacji przez ponowne zainstalowanie.

Niektóre poprawki menu pakietu:

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

Dzięki temu mogę s newzobaczyć, które pakiety są nowo dostępne. A po naciśnięciu, Uaby zaznaczyć ulepszenia, mogę znaleźć alistę buforów tych, które zostały oznaczone, na wypadek, gdyby chciałem zagłębić się w szczegóły tego, co się zmieniło itp.

glucas
źródło
Dzięki, na pytania udzielane są przede wszystkim odpowiedzi. apracował nad znalezieniem oznaczonych paczek. Jednak s installedkażdy z pozostałych trzech statusów zwraca pustą listę.
Jaagrit Sapana
Jakiej wersji Emacsa używasz?
glucas
Używam 24.5.1
Jaagrit Sapana
Ach ok. Sprawdziłem, a package-menu-filterpolecenie jest nowe w 25.1, więc to polecenie nie będzie dla ciebie działać.
glucas
Robię to w każdy poniedziałek rano
Ricky Nelson
10

Możesz użyć auto-package-updatedo automatycznej aktualizacji pakietów.

Skopiowano z mojego innego postu ( /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))

Dzięki tej konfiguracji pakiety będą aktualizowane codziennie 4, a stare pakiety będą usuwane.

cslux
źródło
0

Staraj epmsię utrzymywać proces aktualizacji w czystości.

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

Może uruchomić proces aktualizacji w ramach procesu wsadowego emacs, bez ładowania normalnych ustawień init.el.

lurdan
źródło
0

Istnieje wysoce zalecany pakiet o nazwie paradoks, który rozszerza polecenia zarządzania pakietami. Czytaj więcej na https://github.com/Malabarba/paradox

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

Ta konfiguracja przekazuje statystyki użytkowania pakietu z powrotem do systemu za pomocą oddzielnie ustawionego tokena github i aktualizuje pakiety w tle, gdy ręcznie uruchomisz polecenie paradox-upgrade-packagespowiązane z wybranymi kluczami.

Przeczytaj dokumentację wbudowaną zmiennej, paradox-github-tokenw jaki sposób ją skonfigurować.

Heikki
źródło
0

Wystarczy wpisać listę pakietów i nacisnąć SHIFT + U. Oznacze wszystkie zainstalowane pakiety do aktualizacji.

slk500
źródło
Prawdopodobnie nie jest w pełni automatyczny.
JeanPierre