我昨天晚上从package.el
迁移到了straight.el
。说下感想。
首先速度方面,作者的说法是跟package.el
差不多,主要影响因素还是网络速度。
功能方面,straight.el
有优势,我现在只需要straight-use-package
,不需要手动更新。不过目前不支持删除冗余包的功能(准确的说是repo)。虽然不支持删除repo,没有用到的包是不会被load的。
github的支持方面straight.el
也完胜,首先melpa上没有的包只要用recipe就能下载。很方便,我没用过quelpa,不知道对比如何。straight.el
支持一些quelpa没有的功能,比如merge,push,pull之类(当然你也可以用magit手动操作)。
最启动速度的影响方面我不清楚,因为我的配置里包管理是单独做的,启动的时候不会检查包。有用过的补充一下。
这哥们大学就能写出来这么强的包让我自愧不如啊。
P.S. 继hlisnner更新狂魔后,emacs社区又迎来raxod502文档狂魔。有一种70年代吸着女士香烟用Emacs办公的超级秘书即视感。
3 个赞
我用 el-get,支持的协议更多。比如想要克隆某个特定的 commit,但是 github 不支持这么做,不过却提供了 cimmit 对应的 zip 下载。
另外 straight.el 好像还不支持浅克隆。
前两天刚从 straight.el
换回 package.el
,至于前者的缺点:
-
straight.el
比 package.el
复杂
-
更新包的命令(M-x straight-pull-all
)异常难用
-
重新安装所有的包(比如在一台新电脑上配置 Emacs 环境)可能会很慢,考虑到 git clone
的体积很大,其次是国内的网络环境比较差
~ $ du -sh ~/.emacs.d/straight/repos/
1.8G /Users/xcy/.emacs.d/straight/repos/
至于优点可以参考 README。
Info 是支持的,只是由于一些无法避免的原因可能会失败,比如用户电脑上没装 texinfo、texinfo 版本不匹配、安装 info 的命令比较复杂(straight.el
不支持自定义命令)。
package.el
/ ELPA 可以看成从「二进制包」安装,straight.el
可以看成从 「源代码包」安装。
1 个赞
Linux 太弱,像 Pentium 4 + 512MB 这种情况 Arch 完全没用,反而 BSD 都能支持。
我觉得应该定一些标准宏,利用 eval-when
实现在加载包的时候自动编译 el 文件和安装其它相关组件。而且 straight.el 这种用软链接的方式我觉得缺少灵活性。
现在的包管理策略都是默认给单用户安装的,对于我这样习惯做不同事切换不同用户账号的策略并不方便。
很早就吐槽 straight.el 不支持浅克隆(导致慢和占空间)了: 如何对正在使用的elisp包进行编写调试? - #16,来自 twlz0ne 它现在还没计划要改善吗?
浅克隆是指什么?我刚开始接触从源安装包没什么概念。
不全部复制下来的话不会缺少文件吗?
lydia
13
你的发行版不对而已。slackware就能支持,debian更不用说吧。老旧机器有专用发行版的
我觉得任何供最终用户使用的git clone
命令都应该加上--depth 1
参数……
3 个赞
shallow clone的issue,说是放进了milestone,但是里面却没有它,我没搞清楚现在实现了没。反正至少是在路上了……
然后我想问,怎么把melpa之类的仓库换成emacs-china源?straight-recipe-repositories
?
straight 不支持 ELPA,只能从 Git 安装包,部分包的 Git 信息来自于 Melpa,如 Magit
1 个赞
cireu
17
想尝试一下,感觉git submodule 安装爽,删除起来特别让人头秃
我给magit写了个magit-submodule-remove
很好用
刚体验了一下straight,有以下感想:
-
我完全不需要自动build的功能。
-
文档虽然很多,但我觉得其实不如给实际配置的例子。比如我想禁用build,找到参数:no-build,但这个参数怎么用呢? 文档说了一大推,我看了半天还是一头雾水,直到在issue中搜到了这样的代码:
(straight-override-recipe
'(org :type git :host github :repo "emacsmirror/org" :no-build t))
(use-package org)
这不就清楚了吗。。。
-
因为straight默认只把package的build文件夹加入 load-path
,所以如果build的过程出了问题,导致build文件夹是空,那么就会找不到这个package。
-
我用straight配置aweshell
,就碰到了3中的bug,然后我至今都不知道它为什么没有build(是因为没有Makefile吗?但没必要为了使用straight特地为没有Makefile的package特地写一个吧。。。)
所以最终我禁用了straight的build功能,然后另写了代码把straight下载的package加入到load-path
里。
总结:比我想象的要难用
5 个赞
我今天还在想要不要转到straight,看来还是再观望一会比较好吧……
1 个赞