如何在不重新下载的情况下重新安装package?

曾经将 emacs 从 24.5 升级到 25,然后发现 org 导出 html 出错,然后把 elpa 目录给删了,重新启动 emacs 将所有 package 重新下载安装了一遍后问题解决,所以我的问题就是,其实这些 package 还是原来那些 package,有什么方法可以不必重新下载,只要重新安装即可以了?

之前有一个帖子提到过提供类似功能的插件: Spacemacs 从未能安装到不想放弃 - #4,来自 Liu233w

插件地址: GitHub - redguardtoo/elpa-mirror: Create local emacs package repository. 15 seconds to install 115 packages.

恩,制作本地仓库是一个办法,我也尝试过陈斌的这个方法,确实不错。 不过我想,这个办法还是稍显麻烦了点,我理想的解决思路是如果能在更换 emacs 版本后,把 elpa 目录下的 *.elc 文件全部删除,再找个办法让 emacs 重新编译生成新的 elc 文件就更完美了。所以问题是如下几点:

  1. 是否重新为 package 编译生成新的 *.elc 文件就可以了,有没有其它要处理的东西?
  2. 如何重新编译 package?

可以用 byte-recompile-directory 函数,只要指定 elpa 文件夹即可。

恩,这函数不错。

也就是说你并没有找出问题的原因。一般新版本的 Emacs 能运行相对较老版本的 Emacs 的 byte code。

In general, any version of Emacs can run byte-compiled code produced by recent earlier versions of Emacs, but the reverse is not true.

Byte Compilation (GNU Emacs Lisp Reference Manual)

没什么好办法,或许重新下载压根一点就不麻烦:刚刚我把我的 elpa 目录删掉,重启重新安装一遍, 安装 150 个包一共花了 4 分钟。所以要是我是你的话,压根就不会花太多时间去想怎么节省 4 分钟。

1 个赞

我的意思是下载 package 这是一个不必要的步骤,而不是说这个步骤耗时,所以你这是答非所问。。。。。

源码就是包,你都删掉了。。不下载还安装啥

拜托,我问的就是如何不删除 package,只重新安装。