通过M-x list-packages
界面更新软件包时,成功安装软件包后,系统会询问您是否要删除旧软件包。不要删除它们,以便它们保留在原处,然后您可以稍后通过此界面删除较新的软件包。
我当前的软件包列表显示了〜/ .emacs.d / elpa /目录树中安装的magit的4个版本。
magit 20160827.1549 obsolete A Git porcelain inside Emacs
magit 20160907.945 obsolete A Git porcelain inside Emacs
magit 20161001.1454 obsolete A Git porcelain inside Emacs
magit 20161123.617 installed A Git porcelain inside Emacs
您可以稍后使用键~
(package-menu-mark-obsolete-for-deletion)清除旧版本,以标记所有过时的软件包。要删除某个旧版本,请移至其行,然后按d
将其标记为删除。标记软件包后,您将x
照常使用它们来执行操作。
在Emacs 25中,将所有软件包标记为U
pgrade功能会自动将所有旧软件包设置为删除,并且安装后不会提示您确认。您必须查找以大写字母“ D”开头的行,您只需取消标记即可(最好使用以下宏)
在以下几行中,在短划线的左侧键入键或和弦。
<F3> - start macro recording
C-s - isearch-forward
C-q - quoted-insert
C-j - linefeed character
D - the mark at the start of the line
<Ret> - stops the isearch on the line with the "D"
u - unmark the package for deletion
<F4> - stops macro recording - the first package is now unmarked
<F4> - executes the macro for the next upgraded package
如果没有进一步的搜索匹配,宏将响起并停止,因此您可以C-u 0 <F4>
取消标记所有要删除的软件包的标记。在此之后,您可以x
退出安装。
我在注释中声明要更改的函数必须以一种我无法掌握的方式进行更改,因为最后一个(条件)块必须成功才能避免循环不断,这一点很重要。
M-x package-install-file
。除了ELPA / package.el之外,还有其他管理软件包的方法,例如el-get和quelpa,它们似乎可以在没有ELPA的情况下使用,也许它们可以完成您想做的事情。