rust 真的是硬盘杀手

2022-10-21 14:04:29 +08:00
 v2defy

随随便便写几行代码,拉几个依赖一编译,分分钟两三 G 没了。

大项目更是恐怖,substrate 编译后 42G ,cargo clean 后 42 兆。

家目录下的 .cargo 和 .rustup 用一段时间也能分别占用十多个 G ,

500G 硬盘很容易就不够用了,看来以后再买电脑得 1T 起步了。

11713 次点击
所在节点    程序员
49 条回复
adminone
2022-10-21 18:08:18 +08:00
substrate 你 build 时没看快上千个包嘛
7c00
2022-10-21 18:19:40 +08:00
@ZeroDu java web 可能还好,android 开发不容乐观,我这里 ~/.gradle 8.6G ,还没多少个项目,而且很多时候初始化项目前我刻意改过 gradle-wrapper.properties ,不然基本上每个项目都用不同版本的 gradle ,每个几百 MB ,多跑几个 demo 又用掉几个 G
darkengine
2022-10-21 18:22:59 +08:00
Xcode 笑而不语
zhuweiyou
2022-10-21 18:28:53 +08:00
4 楼说的对
MrKrabs
2022-10-21 18:38:54 +08:00
ssd+雷电硬盘盒没多少钱
knowckx
2022-10-21 18:51:37 +08:00
假如依赖包先后发布 v1.1 v1.2 v1.3
我们更新依赖升级版本到 v1.3,但是之前本地留下的 v1.1 和 v1.2 的包内容并不会被清理掉
pinylin
2022-10-21 19:16:25 +08:00
第三次 推荐 kondo
cest
2022-10-21 20:15:18 +08:00
@knowckx #26 所以得自己清,又懒得分析那些还在 in use ,全清了再自动下载回来
haolongsun
2022-10-21 20:34:27 +08:00
就这? npm 表示小意思
israinbow
2022-10-21 20:42:26 +08:00
最近用 tauri 做软件,体验 nodejs + rust 之一个页面两个按钮的但页面应用,依赖 8 个 Gb 。
ClericPy
2022-10-21 21:04:10 +08:00
看到前面提到都这样, 想起 Windows 默认把各路缓存放 user 目录里真特娘烦死, 备份个 C 盘有 20 多 GB 是各路包管理器和 linter 缓存, 清都清不过来, chrome 也乱七八糟往里扔, 真当 user 目录是垃圾桶了
u823tg
2022-10-21 21:07:47 +08:00
@ClericPy #31 因为多用户啊,总不能给公共区域拉屎啊。
ClericPy
2022-10-21 21:12:40 +08:00
@u823tg 我意思是如果都放一个特定前缀的也行, 实在是到处乱放, mypy 的 cache 清的我手都软了, 如果各类软件协商都放 user 下面的 .cache 之类的目录, 我备份时候直接跳过去了...
yuekcc
2022-10-21 21:15:05 +08:00
找到个清理的工具: https://github.com/tbillington/kondo

正好也是 rust 写的。
u823tg
2022-10-21 21:15:43 +08:00
@ClericPy #33 那这个全看各个厂商了, 各个系统都有这个毛病。
Jtyczc
2022-10-21 22:42:11 +08:00
这么恐怖的吗
chenqh
2022-10-21 23:09:02 +08:00
@u823tg 这种有没有什么工具可以清一下啊,因为我 windows C 盘还是很少的
oksbsb
2022-10-22 01:41:21 +08:00
内存盘 + cargo config 统一配置 target 目录。
lysS
2022-10-22 09:36:44 +08:00
@novolunt #1 go 怎么有这个问题了?
Nugine0
2022-10-22 10:26:54 +08:00
rust 不会自动清除无用的编译产物,要定期删掉 target 。
一些编译设置(高等级优化,增量编译,lto 等)会保存额外的中间信息。
debug 和 release 会产生两遍编译产物,有的 c/c++绑定会下载两遍预编译文件,没事可以删删 target/debug 。
交叉编译时对每个目标平台分别编译,有多少个就乘几倍……
有工具(sccache)可以跨工作区复用编译产物。上面有人说的透明压缩也能缓解。
rust 默认全部静态链接,手动设成动态链接可以减少中间产物体积,不过既麻烦又对泛型没用。
rust 的包管理和 nodejs 一样鼓励复用,导致动不动上百个间接依赖,也是膨胀得很厉害。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/888714

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX