RCurl OS X El Capitan -9806 错误
RCurl on OS X El Capitan -9806 Error
我正在尝试使用 RCurl 进行 oauth 2 身份验证。我的代码是:
library(RCurl)
myOpts <- curlOptions(httpheader =
c(Accept="application/json",
"Content-Type"="application/x-www-form-urlencoded"))
token <- postForm(authURL,
.params = list(
client_id ="aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
client_secret = "bbbbbbbbbbbbbbbbbbbbbbbbbbbb",
username = "xxxxx@yyyy.zzz",
password = pswd),
.opts = myOpts,
style="POST")
该代码在 R/Windows 上运行良好,但在 OS X El Capitan 上运行不佳。在 OS X 上,我收到错误
Error in function (type, msg, asError = TRUE) :
SSLRead() return error -9806
我认为 OS X 附带的 curl/libcurl 版本中的 SSL 存在问题,并且在其他地方有记录,但我一直无法找出解决方法。对于它的价值,我在 httr 包中遇到了类似的问题。我如何更新 curl 并使其与 RCurl 完美配合?
我的问题与 非常相似,但是 El Capitan 很难按照 post 的答案中的建议复制 curl-config 文件。
您没有说明您使用的是哪个版本的 R 或 libcurl 或它们是如何安装的,因此您的问题的完整答案可能需要好几页才能涵盖所有可能的变体。 El Capitan 改变了安全设计。在 "rootless el capitan" 或 "el capitan system integrity protection" 上进行 google 搜索。大多数 /usr/
现在默认锁定,/usr/local/
除外。它是 ,但在您这样做之前,我建议您检查一下自制软件是否已更新以适应此更改。 (我认为它可能一直在使用 /usr/local/
。)我还会确保您了解自制程序安装过程与 R 的 OSX 分支的维护者所期望的有何不同。
出于比较目的,我确实安装了 RCurl 的功能安装,如果是 IIRC,则安装在二进制版本的 R 3.2.2 中,我的 curl 版本报告看起来像。
machine-name-redacted-mac-pro:~ redacted$ curl --version
curl 7.43.0 (x86_64-apple-darwin15.0) libcurl/7.43.0 SecureTransport zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz UnixSockets
# and in R
> packageVersion("RCurl")
[1] ‘1.95.4.7’
> system("which curl")
/usr/bin/curl
我使用了以下方法:
- 使用通常的 gnu configure/make/install 序列从源安装 libressl。
- 使用通常的 gnu configure/make/install 序列再次从源安装 curl。在配置步骤中,我需要使用 --with-ca-bundle 选项将配置指向有效的证书文件。
- 从源代码编译 RCurl,确保 /usr/local/bin 在路径列表中比 /usr/bin 更早,以便 RCurl 的配置脚本从新版本的 curl 而不是 [=26] 中找到 curl-config =] x 默认版本。
我很想知道是否有更好的方法。
我正在尝试使用 RCurl 进行 oauth 2 身份验证。我的代码是:
library(RCurl)
myOpts <- curlOptions(httpheader =
c(Accept="application/json",
"Content-Type"="application/x-www-form-urlencoded"))
token <- postForm(authURL,
.params = list(
client_id ="aaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
client_secret = "bbbbbbbbbbbbbbbbbbbbbbbbbbbb",
username = "xxxxx@yyyy.zzz",
password = pswd),
.opts = myOpts,
style="POST")
该代码在 R/Windows 上运行良好,但在 OS X El Capitan 上运行不佳。在 OS X 上,我收到错误
Error in function (type, msg, asError = TRUE) :
SSLRead() return error -9806
我认为 OS X 附带的 curl/libcurl 版本中的 SSL 存在问题,并且在其他地方有记录,但我一直无法找出解决方法。对于它的价值,我在 httr 包中遇到了类似的问题。我如何更新 curl 并使其与 RCurl 完美配合?
我的问题与
您没有说明您使用的是哪个版本的 R 或 libcurl 或它们是如何安装的,因此您的问题的完整答案可能需要好几页才能涵盖所有可能的变体。 El Capitan 改变了安全设计。在 "rootless el capitan" 或 "el capitan system integrity protection" 上进行 google 搜索。大多数 /usr/
现在默认锁定,/usr/local/
除外。它是 /usr/local/
。)我还会确保您了解自制程序安装过程与 R 的 OSX 分支的维护者所期望的有何不同。
出于比较目的,我确实安装了 RCurl 的功能安装,如果是 IIRC,则安装在二进制版本的 R 3.2.2 中,我的 curl 版本报告看起来像。
machine-name-redacted-mac-pro:~ redacted$ curl --version
curl 7.43.0 (x86_64-apple-darwin15.0) libcurl/7.43.0 SecureTransport zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz UnixSockets
# and in R
> packageVersion("RCurl")
[1] ‘1.95.4.7’
> system("which curl")
/usr/bin/curl
我使用了以下方法:
- 使用通常的 gnu configure/make/install 序列从源安装 libressl。
- 使用通常的 gnu configure/make/install 序列再次从源安装 curl。在配置步骤中,我需要使用 --with-ca-bundle 选项将配置指向有效的证书文件。
- 从源代码编译 RCurl,确保 /usr/local/bin 在路径列表中比 /usr/bin 更早,以便 RCurl 的配置脚本从新版本的 curl 而不是 [=26] 中找到 curl-config =] x 默认版本。
我很想知道是否有更好的方法。