Conda 环境中安装的 R 可能使用与终端中 curl 可执行文件不同的 libcurl 构建。请向失败的 R 会话询问它实际拥有哪个库:

info <- libcurlVersion()
info
attr(info, 'ssl_version')
attr(info, 'protocols')

该字符值报告所链接 libcurl 的版本。其 ssl_version 属性标识 TLS 实现,而 protocols 列出该库支持的目标协议。它们描述的是 R 内置的 libcurl 路径,而不是名为 curl 的 shell 命令。

将报告与下载方式对应起来

使用 method='libcurl' 的 download.file 会使用这个库。method='curl' 则启动外部可执行文件。当前的自动 HTTP(S) 选择使用 libcurl,而 download.file.method 选项为 NULL 时可能让该默认值继续生效。

请在作业或 IDE 所选的实际环境中执行检查。另一套 R 安装可能报告不同的版本或 TLS 后端,即使其脚本看起来完全相同。

列表中包含 https 协议意味着支持 HTTPS 目标。这并不能证明某个特定代理监听器接受 TLS。用于 HTTPS 下载的普通 HTTP 代理,其代理 URL 仍然是 http://。

将库报告与所选方法和连接错误一并保留。证书失败、不支持的代理方案和被拒绝的监听器仍是不同的发现;仅有版本号并不构成对它们的诊断。

相关文章