首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emacs升级后如何重建ELPA软件包

Emacs升级后如何重建ELPA软件包
EN

Stack Overflow用户
提问于 2014-07-13 18:17:05
回答 4查看 16.1K关注 0票数 67

我刚刚在MacOS上将GNU从23升级到24,一些ELPA安装的软件包停止工作。其中一个是AucTeX。删除它并通过包管理器重新安装它使它再次工作,但我不想对每个包手工操作。我有点困惑,因为我在互联网上什么也没发现。

难道.elc不需要重新编译为Emacs的新版本吗?为什么这不是package.el的一个特性呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-07-14 11:19:21

您不需要重新安装所有软件包。包本身可能很好,但是,它们需要重新编译,因为Emacs字节码通常在主要版本之间不兼容。

要重新编译所有包,输入M-: (byte-recompile-directory package-user-dir nil 'force)。重新启动Emacs之后,包应该可以再次正常工作。

票数 121
EN

Stack Overflow用户

发布于 2016-10-26 21:24:24

这对我适用于Emacs 25.1和26:

代码语言:javascript
复制
(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)))))
票数 8
EN

Stack Overflow用户

发布于 2014-07-14 07:23:41

变量package-activated-list保存我们感兴趣的包列表。所以我们只需要再安装一次。我们不需要显式地删除它们;调用package-install会毁掉一个旧版本。

将此代码放入一个划痕缓冲区中,并对其进行计算(也就是说,将光标放在末尾,然后按C-x C-e):

代码语言:javascript
复制
(dolist (package-name package-activated-list)
  (package-install package-name))
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24725778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档