OS X上的RCur El Capitan -9806错误

时间:2015-12-12 14:38:13

标签: r macos curl rcurl httr

我正在尝试使用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完美配合?

我的问题与How do I get RCurl to connect to POST SSL on OS X Yosemite?非常相似,但El Capitan难以按照该帖子的回答中的建议复制curl-config文件。

2 个答案:

答案 0 :(得分:0)

您没有说明您正在使用的R或libcurl的版本或安装方式,因此,对您的问题的完整答案可能需要多个页面来涵盖所有可能的变体。 El Capitan改变了安全设计。谷歌搜索&#34;无根的capitan&#34;或者&#34; el capitan系统完整性保护&#34;。现在,大多数/usr/都被锁定,/usr/local/除外。它是possible to temporarily disable that feature,但在你这样做之前,我会建议检查一下自制软件是否已经更新以适应这种变化。 (我认为它可能一直在使用/usr/local/。)我还要确保您了解自制程序安装过程与ROS的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

答案 1 :(得分:0)

我得到以下工作:

  1. 使用通常的gnu configure / make / install序列从源安装libressl。
  2. 使用通常的gnu configure / make / install序列再次从源安装curl。在配置步骤中,我需要使用--with-ca-bundle选项将configure指向有效的证书文件。
  3. 从源代码编译RCurl,确保/ usr / local / bin在路径列表中比/ usr / bin更早,以便RCurl的configure脚本从新版本的curl而不是os x默认版本中找到curl-config。
  4. 我很想知道是否有更好的方式。