我刚刚在MacOS上将GNU Emacs从23升级到24,并且一些ELPA安装的软件包停止工作.其中之一是AucTeX.删除它并通过包管理器重新安装它使它再次工作,但我不想手动为每个包执行此操作.我有点困惑,我在互联网上找不到任何相关信息.
对于新版本的Emacs,是否需要重新编译.elc?为什么这不是package.el的功能?
lun*_*orn 91
您无需重新安装所有软件包.包本身可能很好,但是,它们需要重新编译,因为Emacs Lisp字节代码通常在主要版本之间不兼容.
要重新编译所有包,请键入M-: (byte-recompile-directory package-user-dir nil 'force)
.重新启动Emacs后,包应该再次正常工作.
这在 Emacs 25.1 和 26 上对我有用:
(defun package-reinstall-all-activated-packages ()
"Refresh and reinstall all activated packages."
(interactive)
(package-refresh-contents)
(dolist (package-name package-activated-list)
(when (package-installed-p package-name)
(unless (ignore-errors ;some packages may fail to install
(package-reinstall package-name))
(warn "Package %s failed to reinstall" package-name)))))
Run Code Online (Sandbox Code Playgroud)
该变量package-activated-list
保存了我们感兴趣的软件包列表。因此我们只需要再次安装每个软件包即可。我们不需要显式删除它们;调用package-install
会吹掉旧版本。
将此代码放入暂存缓冲区并对其进行评估(即将光标放在末尾,然后按C-x C-e
):
(dolist (package-name package-activated-list)
(package-install package-name))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9340 次 |
最近记录: |