conan 找不到包需先检查 remote 配置是否正确,运行 conan remote list 确认至少一个 remote 处于 enabled: true 状态;再验证包名格式(name/version)、remote 上是否存在该包及 binary id 是否匹配当前 profile。

Conan 找不到包,先看 remote 是否配置正确
Conan 不像 Composer 或 pip 那样默认连公网源;它必须显式配置 remote 才能查包。运行 conan remote list,确认至少有一个 remote 处于 enabled: True 状态。如果输出为空或全是 disabled,那根本不会去任何地方找包——自然报“package not found”。常见错误是误删 remote、CI 脚本里没执行 conan remote add,或用了 --no-remote 却忘了去掉。
- 添加官方中心仓:
conan remote add conancenter https://center.conan.io - 国内用户可加镜像(如清华源):
conan remote add tsinghua https://mirrors.tuna.tsinghua.edu.cn/conan/ - 私有仓需确保 URL 可访问、认证已配置(
conan user -r xxx)
包名和版本写法是否符合 Conan 规范
Conan 的包名不是自由字符串,而是 name/version@user/channel 三段式(旧版)或 name/version(新版,user/channel 已弃用)。如果你写 conan install mylib/1.0 却提示找不到,很可能是:
- 版本号不匹配:包实际发布的是
mylib/1.0.0,而你写了1.0(Conan 默认不自动补零) - 用了已废弃的
@user/channel格式但 remote 不支持(如新 center.conan.io 不接受@后缀) - 名字大小写敏感:
OpenCV/4.5.5对,opencv/4.5.5错(官方包名首字母大写) - 没加
/version:conan install mylib会失败,必须带版本
查不到包?先确认它真在 remote 上
别依赖本地缓存或直觉。直接查 remote:conan search "mylib*" -r conancenter(把 conancenter 换成你实际的 remote 名)。如果返回空,说明该 remote 确实没这个包——可能作者只推到了另一个 remote,或根本没上传。
- 查具体包的可用版本:
conan search mylib/1.0.0 -r conancenter - 查包是否存在但被过滤(比如因 profile 中
os=Windows,但 remote 只有 Linux 二进制):conan search mylib/1.0.0 -r conancenter --table看 binary 列 - 若用自建 Artifactory/Nexus,登录 Web UI 直接搜包名,确认路径、repo 和权限设置无误
binary id 不匹配导致“找到包但找不到二进制”
这是 Conan 最隐蔽的一类“找不到”:conan install 能列出包,却报 No remote binary packages found。根本原因是当前 profile 计算出的 binary ID 和远程已有的 binary ID 不一致——哪怕只是编译器版本、shared=True vs False、甚至 C++ 标准(cppstd=17 vs 20)不同,都会导致 ID 变化。
- 临时看当前环境生成的 ID:
conan info . --profile=default --dry-run,关注输出里的ID:行 - 对比远程已有 binary ID:
conan search mylib/1.0.0 -r conancenter --table,看ID列是否匹配 - 强制复用已有 binary(不推荐长期用):
conan install . -r conancenter --build=missing --update,或改 profile 使其与远程一致
binary ID 机制是 Conan 的核心设计,不是 bug。排查时最容易忽略 profile 细节,比如以为 compiler.version=12 和 12.0 等价,其实不等。











