最简单清空本地conan缓存是执行conan remove -f,但会无差别删除所有包;可按时间筛选如conan remove "" --older-than=30 --confirm,或用conan cache clean清理未引用源码;误删后recipe和二进制可从远程恢复,但本地修改的recipe需git备份。

直接删掉所有本地包最简单
执行 conan remove * 会列出所有待删除的包并询问确认;加 -f 参数跳过确认:conan remove * -f。这是最快清空整个缓存的方式,适合重置环境或排查包冲突问题。注意:该命令不区分远程/本地、已安装/未使用,一并清除。
按时间或条件筛选清理
缓存积压多时,全删太粗暴。Conan 支持按时间保留策略:
-
conan remove "*" --older-than=30 --confirm:只删 30 天前的包(含 recipe 和二进制),--confirm避免交互 -
conan cache clean:清空未被任何 conanfile 引用的源码缓存(source目录),不碰packages或recipes - 想删特定平台的二进制?得先查清楚再删:
conan list "zlib/*" --graph=mygraph.json配合conan remove指定user/channel和settings
误删后怎么恢复
Conan 本身不提供回收站机制,删了就没了。但实际影响有限:
- recipe(
conanfile.py)删了也能从远程重新拉,只要远程仓库还存在且你有权限 - 二进制包删了,下次
conan install会自动下载(如果远程有对应二进制)或触发本地构建(--build=missing) - 真正不可逆的是本地修改过的 recipe 或未上传的私有包——这些必须靠 Git 等外部版本控制来兜底
清理前建议先看一眼缓存结构
Conan 缓存默认在 ~/.conan2(Conan 2.x)或 ~/.conan(1.x)。里面关键目录是:
-
cache/recipes:存储所有 recipe 的元数据和 conanfile -
cache/packages:按reference + settings + options + hash存二进制,路径极长,别手动删 -
cache/source:解压后的源码,conan cache clean就清这里
手动进目录删文件容易破坏缓存一致性,务必优先走 conan remove 或 conan cache clean 命令。尤其 packages 下的 hash 目录,错删一个字节可能导致后续 install 报 Package not found 却查不出原因。











