柯南用户权限被拒绝

conan Permission denied for user

我有一个使用 arrow 和 parquet 的项目。我下载并构建了所需的库,然后成功构建了我的库。现在我想将它迁移到使用柯南,以简化构建过程。

我面临的问题是,arrow 的大多数(如果不是全部)预构建二进制文件都不包含 parquet,至少对于 Windows。

这可能意味着柯南会下载配方并构建它。但是,一旦我将 parquet 添加到我的 conanfile.txt,我就会收到错误

这是我的 conanfile.txt

[requires]
arrow/2.0.0
rapidjson/cci.20200410
catch2/2.13.6

[generators]
cmake

[options]
arrow:shared=False
arrow:parquet=True

这些是我在使用 conan install 时遇到的错误

>conan install ..
Configuration:
[settings]
arch=x86_64
arch_build=x86_64
build_type=Release
compiler=Visual Studio
compiler.runtime=MD
compiler.version=14
os=Windows
os_build=Windows
[options]
[build_requires]
[env]

WARN: thrift/0.13.0: requirement boost/1.76.0 overridden by arrow/2.0.0 to boost/1.74.0
WARN: libevent/2.1.12: requirement openssl/1.1.1j overridden by thrift/0.13.0 to openssl/1.1.1k
ERROR: Permission denied for user: 'None'. [Remote: bincrafters:]

从错误来看,我假设食谱有一些版本冲突,无法继续,我需要做一些类似Using override的事情,但我不知道如何有效地做这个。

其他答案,包括 中的一个假设将柯南更新到最新版本可以解决此问题,但我已经更新到 1.38 版,但无济于事。

有什么提示吗?

编辑 1:

我发现的第一件事是我的 remotes.json 已经过时,指向 bincrafters。这可能确实是破坏我构建的东西。我会 post 我以后找到的东西

我想我应该记录下我的发现,因为这些信息不容易获得:

首先,

ERROR: Permission denied for user: 'None'. [Remote: bincrafters:]

这表示 remotes.json 的配置 错误 。 bincrafters 不再存在,但如果无法到达其中一个遥控器,conan 会完全停止(该配置是几年前由其他人创建的,它是自定义的,因为它也指向公司存储库)。

第二个:

清除第一个错误后,第二个答案就有些明显了:

我更新了 conanfile.txt 以强制我的食谱使用最新的 boost 和 openssl(因此绕过了版本冲突)

[requires]
arrow/2.0.0
rapidjson/cci.20200410
catch2/2.13.6
boost/1.76.0
openssl/1.1.1k

[generators]
cmake

[options]
arrow:shared=False
arrow:parquet=True
arrow:with_snappy=True

然后继续安装 conan 依赖项,构建缺少的依赖项:

conan install .. --build=arrow

First thing I found is that my remotes.json is outdated, pointing to bincrafters. This may indeed be the thing that is breaking my build. I'll post what I found later

是的,你是对的。此信息和操作已在此处共享:https://bincrafters.github.io/2020/04/19/infrastructure-changes-and-required-actions/

From the error, I'm assuming that the recipe has some version conflicts and can't continue, and that I need to do something like Using override, but I don't know how to effectively do this.

由于所有菜谱都是手动更新的,所以版本冲突时有发生。此处记录了您问题的正确解决方法:https://docs.conan.io/en/latest/faq/troubleshooting.html#error-incompatible-requirements-obtained-in-different-evaluations-of-requirements

除此之外,您可以在这里打开一个请求版本更新的问题:https://github.com/conan-io/conan-center-index/issues