如何回退某个elpa包的版本

抱歉这可能是一个比较基础的问题, 但我确实没搜到解决方案.

昨天在使用spacemacs的时候, 点击了home page上的update packages按钮更新了所有的package, 然后某个功能就不能正常工作了, 看log可以猜测是哪个包出的问题, 但是我想请问各位我要怎么操作将这个包回退几个版本试试?

我也不知道

不过 觉得 git 应该有答案

melpa是滚动更新,没法回退的,你只能找到那个插件的git仓库,回到你不能正常使用的那次提交之前,然后clone下来,顺便给作者报个issue

再借问一下, 我实际的错误是加载一个.elc文件出了错, 但实际上git仓库里面只有.el的文件, 请问这个.elc的文件是怎么来的?

elc是字节码编译器编译出来的,字节码执行效率高,所以包管理会自动帮你编译插件

怀疑字节码有问题,可以手动删除elc文件,让emacs加载原始el文件排错

重新checkout对应的版本 这个问题确实不好解决 之前看视频学习的时候是用cask来管理 但是我觉得很麻烦 我的建议是 这次搞好之后 自己备份一下 以防万一 没事不要乱更新

是check 还是 checkout

做事应该严谨些

OK. 退了一个版本问题解决了, 看log感觉是某个包单独更新了但是spacemacs没来得及更新导致出了问题. 另外spacemacs管理包的方式我也没搞懂, 被他自动更新几次之后我是硬替换的包里的所有文件. 后面有空可能还得再研究一下.

谢大佬指正!!

感觉滚动更新,无法回退的设计有点不太合理,我不小心在package-list-packages 里 按了一下U 和x ,以为升级一下没事,结果100多个包都升级了,打开各种问题,我总不能全进去用git check out 上一个版本吧…

spacemacs 的 master 分支会出稳定包版本列表,类似 linux 发行版的感觉,冻结用到的每个包。但这个 master 分支好多年了都没发布……

doom emacs 这方面简单点,一开始就用 straight.el + github 管理了,支持 :pin,欢迎转阵营。

但是各个包有 bug 是难免的,用的包越多 bug 越多,Emacs 还没怎么用,就在调教 bug 了😭