conan本地缓存清理推荐三类方式:按时间(--older-than)、按引用关系(--unused)和强制清空(-f),并需配合conan cache clean处理源码、构建和下载缓存。

本地缓存膨胀是 Conan 用户最常遇到的磁盘空间问题,直接删整个缓存目录风险高,推荐用 conan remove 配合条件筛选精准清理。
按时间清理过期包(最常用)
长期不用的旧版本包会持续堆积,尤其是频繁迭代的开发环境。Conan 支持按天数自动过滤:
-
conan remove "*"默认只删本地缓存中未被任何 profile 或依赖图引用的包,安全但不够彻底 - 加
--older-than=30可删 30 天前创建的所有包(注意:不是“最后使用时间”,而是包在缓存中首次写入的时间) - 必须加
--confirm才会真正执行,否则只是预览;漏掉它会卡在交互确认环节 - 如果想保留某几个关键包(比如
zlib/1.2.13),得先单独导出备份,conan remove不支持白名单模式
按引用关系清理未使用包
CI 构建或临时测试后,很多包只被某次 conan install 拉下来,之后再没被任何 conanfile.py 或 lockfile 引用。这类包可安全清空:
-
conan remove --unused是最省心的方式,它扫描所有本地 lockfile 和 profile 的依赖图,只保留被引用的包 - 该命令不删远程配置、profile、缓存元数据,只动
~/.conan/data/下的包目录 - 执行前建议先跑
conan list "*"看当前缓存总量,清理后对比验证 - 注意:如果你用的是 Conan 2.x 的
conan.lock文件,该命令能准确识别;但若项目还混用 1.x 的conanbuildinfo.txt,识别可能遗漏
强制清空全部本地包(慎用)
当缓存严重损坏、路径错乱或迁移环境时,全删比逐个修复更高效,但必须清楚后果:
-
conan remove "*" -f会立刻删除~/.conan/data/下所有包,不走回收站,不可逆 -
-f是强制标志,等价于--force,没有二次确认,手抖输错就没了 - 它不会动
~/.conan/profiles/、~/.conan/remotes.json或~/.conan/conan.conf,这些配置保留 - 删完后首次
conan install会重新下载所有远程依赖,网络和时间成本高,适合离线环境提前准备好的场景
真正容易被忽略的是:Conan 缓存里除了二进制包,还有源码压缩包(source 文件夹)、构建中间产物(build 文件夹)和下载缓存(download)。这些不归 conan remove 管,得用 conan cache clean 单独处理——尤其是 download 目录,经常藏有几百 MB 的重复 tar.gz。











