已经在macOS 10.13.1 下安装了Spacemacs Develop branch 0.300.0 (Emacs 版本25.1.1),目前使用正常。
发现Emacs已经有了更新的版本25.3 (修复了一些bug,和若干安全漏洞),于是准备把我在用的Spacemacs的底层Emacs升级到这个版本。
之前我并没做过这种操作,经过一些调研,形成如下的计划升级预案。因为怕这个升级预案有疏漏,造成对Spacemacs系统的负面影响,所以在正式执行升级之前,我想先把这个升级预案贴出来,让各位道友看看。
如果有问题,欢迎及时指出,避免不必要的折腾;
如果没有问题,我再正式启动执行Emacs升级;
准备采用的预案如下:
- 通过brew升级Emacs到最新版
$ brew tap d12frosted/emacs-plus
$ brew install emacs-plus --HEAD --with-natural-title-bars 或 brew install emacs-plus
$ brew cask emacs-plus
- Spacemacs中启动对elpa进行重新compile的命令,以匹配更新后的emacs版本
SPC SPC spacemacs/recompile-elpa
- (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,并且目前使用正常。
- 首先在terminal下更新homebrew自身
$ brew update
- 通过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 个赞
据我观察,切换 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 个赞
Emacer
10
按您的说法,是否在完成Emacs升级后(仍然假设一开始是通过brew install emacs-plus
进行的升级),还是应该在Spacemacs中执行如下操作来完成package的重新编译:
SPC SPC spacemacs/recompile-elpa