我刚刚在MacOS上将GNU从23升级到24,一些ELPA安装的软件包停止工作。其中一个是AucTeX。删除它并通过包管理器重新安装它使它再次工作,但我不想对每个包手工操作。我有点困惑,因为我在互联网上什么也没发现。
难道.elc不需要重新编译为Emacs的新版本吗?为什么这不是package.el的一个特性呢?
发布于 2014-07-14 11:19:21
您不需要重新安装所有软件包。包本身可能很好,但是,它们需要重新编译,因为Emacs字节码通常在主要版本之间不兼容。
要重新编译所有包,输入M-: (byte-recompile-directory package-user-dir nil 'force)。重新启动Emacs之后,包应该可以再次正常工作。
发布于 2016-10-26 21:24:24
这对我适用于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)))))发布于 2014-07-14 07:23:41
变量package-activated-list保存我们感兴趣的包列表。所以我们只需要再安装一次。我们不需要显式地删除它们;调用package-install会毁掉一个旧版本。
将此代码放入一个划痕缓冲区中,并对其进行计算(也就是说,将光标放在末尾,然后按C-x C-e):
(dolist (package-name package-activated-list)
(package-install package-name))https://stackoverflow.com/questions/24725778
复制相似问题