如何在已经安装Spacemacs后手动升级Emacs版本

已经在macOS 10.13.1 下安装了Spacemacs Develop branch 0.300.0 (Emacs 版本25.1.1),目前使用正常。

发现Emacs已经有了更新的版本25.3 (修复了一些bug,和若干安全漏洞),于是准备把我在用的Spacemacs的底层Emacs升级到这个版本。

之前我并没做过这种操作,经过一些调研,形成如下的计划升级预案。因为怕这个升级预案有疏漏,造成对Spacemacs系统的负面影响,所以在正式执行升级之前,我想先把这个升级预案贴出来,让各位道友看看。

如果有问题,欢迎及时指出,避免不必要的折腾; 如果没有问题,我再正式启动执行Emacs升级;

准备采用的预案如下:

  1. 通过brew升级Emacs到最新版 $ brew tap d12frosted/emacs-plus $ brew install emacs-plus --HEAD --with-natural-title-bars 或 brew install emacs-plus $ brew cask emacs-plus
  2. Spacemacs中启动对elpa进行重新compile的命令,以匹配更新后的emacs版本 SPC SPC spacemacs/recompile-elpa
  3. (Optional?) 更新Spacemacs的package 点击Spacemacs默认主界面的Updage Packages

以上就是计划采用的,在已经安装Spacemacs后,手动升级Emacs的预案。 希望做过此类操作的道友雅正。

谢谢。

Spacemacs和Emacs并不是绑定关系啊……就把Emacs升级了就行了。

如果你不放心的话,你完全可以备份好你的private layers和.spacemacs文件,然后重新安装Spacemacs,这比你重新编译要干净不少

直接刪 .emacs.d/elpa/ 就行。不刪也沒關係。

25.3 沒有重要更新。不如直接更 26,己经准备释出了。

我尝试了如下操作,启动Spacemacs后确实Emacs升级到了25.3,并且目前使用正常。

  1. 首先在terminal下更新homebrew自身
$ brew update
  1. 通过homebrew在terminal下升级安装d12frosted的emacs-plus(Spacemacs官方推荐的Emacs版本)
$ brew tap d12frosted/emacs-plus
$ brew unlink emacs-plus
$ brew install emacs-plus --with-natural-title-bar

完成以上操作后,再启动Spacemacs,就自动开始更新下载全部packages和编译了。 然后重启Spacemacs进入,提示为25.3,目前使用正常。

@LdBeth

  • 我没删除.emacs.d/elpa/,推测在以上提到的Spacemacs自动更新全部packages后,已经自动覆盖里之前的elpa目录?
  • Emacs 26估计什么时间估计能从brew频道放出?(我目前是按照Spacemacs推荐,通过homebrew来安装更新Emacs的)是否现在就可以通过其他手段更新到26?26给Spacemacs带来的显著好处/升级能否说说哈(可能有点跑题)

Org Babel 相關功能应該还有问題。如果你不知道是什麼的話不管也沒事。

是的。

以 Homebrew 的风格,Emacs 26 正式发布之后马上就会有。距正式發表还有一个 Pretest。

推荐自己编译。

1 个赞

感谢您详尽而清晰的答复! :grinning:

你消息哪儿来的……

我怎么感觉还得半年……

据我观察,切换 Emacs 版本,spacemacs 并不会重新下载/编译 package。但是更新 spacemacs 之后下载/编译了一小部分 package(应该是新增的):

# 24 小时以前编译的文件
⋊> find . -name "*.elc" -ctime +24h | wc -l
    2477

# 24 小时以内编译的文件
⋊> find . -name "*.elc" -ctime -24h | wc -l
     561

从 25.1 到 25.3,API 不会有大的变动,.elc 应该是兼容的。删除 ~/.emacs.d/elpa 的确是像「关机/重启/拔电池」一样有效的方法,比较省时做法是手动编译,像我这样经常切换 Emacs 的就是每个版本对应一个单独 elpa-xxx。

1 个赞

http://irreal.org/blog/?p=6790

多看 Planet Emacsen

1 个赞

按您的说法,是否在完成Emacs升级后(仍然假设一开始是通过brew install emacs-plus进行的升级),还是应该在Spacemacs中执行如下操作来完成package的重新编译:

  • SPC SPC spacemacs/recompile-elpa

那你把

(or emacs: Ivy 0.10.0 is out Ivy 0.10.0 is out · (or emacs

也搬运一下呗 :blush:


另外

打了繁体怎么就说话用词都变了 :thinking:

比较尴尬的问题是我和徐是 Helm 用户。

换了输入法以后不想多打字了。岂不美哉。