如何更新与使用软件包一起安装的软件包


24

我正在使用use-package安装和配置软件包(大多数软件包在melpa中)。是否有一种干净的自动化方法来使所有这些软件包保持最新状态?

如果没有,在这种情况下最佳的工作流程是什么?

注意:这里有一个非常相似的问题带有答案,但我想澄清一下“您仍然需要处理安装更新”。我没有足够的声誉,因此无法评论答案以澄清问题。

Answers:


16

我只是手动执行此操作:运行list-packageshit 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?
glucas

我使用的是24.5.1
Jaagrit Sapana,

喔好吧。我检查了一下,该package-menu-filter命令是25.1中的新增功能,因此该命令对您不起作用。
glucas

我每周一早上这样做
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

强烈建议使用一种名为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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.