R 代理诊断:libcurl 版本、TLS 后端与协议
将 R 链接的 libcurl 与外部 curl 可执行文件分开,检查其版本、TLS 实现和协议属性。
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://。
将库报告与所选方法和连接错误一并保留。证书失败、不支持的代理方案和被拒绝的监听器仍是不同的发现;仅有版本号并不构成对它们的诊断。