【问题标题】:devtools::install_github fails with CA cert errordevtools::install_github 因 CA 证书错误而失败
【发布时间】:2015-10-17 01:04:51
【问题描述】:

当我尝试调用 install_github 时,我收到以下错误(不仅仅是这个包,而是所有 github 包):

> install_github('ramnathv/slidify')
Downloading github repo ramnathv/slidify@master
Error in curl::curl_fetch_memory(url, handle = handle) :
Problem with the SSL CA cert (path? access rights?)

但是如果我直接使用 RCurl 用 ssl 访问 github 就没有问题了:

>  x <- getBinaryURL(
          url='https://github.com/ramnathv/slidify/archive/master.zip',
          followlocation=1L
          )

正常工作,因此 RCurl 可以正确验证 SSL 证书并下载存档文件。

> sessionInfo()
R version 3.2.1 (2015-06-18)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Debian GNU/Linux 8 (jessie)

locale:
 [1] LC_CTYPE=en_US.utf8       LC_NUMERIC=C             
 [3] LC_TIME=en_US.utf8        LC_COLLATE=en_US.utf8    
 [5] LC_MONETARY=en_US.utf8    LC_MESSAGES=en_US.utf8   
 [7] LC_PAPER=en_US.utf8       LC_NAME=C                
 [9] LC_ADDRESS=C              LC_TELEPHONE=C           
 [11] LC_MEASUREMENT=en_US.utf8 LC_IDENTIFICATION=C      

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] RCurl_1.95-4.7 bitops_1.0-6   devtools_1.8.0

loaded via a namespace (and not attached):
 [1] httr_1.0.0      R6_2.1.0        magrittr_1.5    rversions_1.0.2
 [5] tools_3.2.1     curl_0.9.1      Rcpp_0.12.0     memoise_0.2.1  
 [9] xml2_0.1.1      stringi_0.5-5   git2r_0.10.1    stringr_1.0.0  
 [13] digest_0.6.8   

> curlVersion()

$age
[1] 3

$version
[1] "7.38.0"

$vesion_num
[1] 468480

$host
[1] "x86_64-pc-linux-gnu"

$features
   ipv6         ssl        libz        ntlm   asynchdns      spnego 
      1           4           8          16         128         256 
   largefile         idn tlsauth_srp     ntlm_wb 
    512        1024       16384       32768 

$ssl_version
[1] "OpenSSL/1.0.1k"

$ssl_version_num
[1] 0

$libz_version
[1] "1.2.8"

$protocols
[1] "dict"   "file"   "ftp"    "ftps"   "gopher" "http"   "https"  "imap"  
[9] "imaps"  "ldap"   "ldaps"  "pop3"   "pop3s"  "rtmp"   "rtsp"   "scp"   
[17] "sftp"   "smtp"   "smtps"  "telnet" "tftp"  

$ares
[1] ""

$ares_num
[1] 0

$libidn
[1] "1.29"

如果我使用httr::set_config( httr::config( ssl_verifypeer = 0L ) ),那么我可以成功运行install_github,但我更愿意实际检查ssl 证书。

谁能提供解决方案?

【问题讨论】:

    标签: r ssl-certificate rcurl devtools


    【解决方案1】:

    确保当前版本的 R 已安装包 curlinstall.packages('curl')

    【讨论】:

      【解决方案2】:

      在为 Coursera 提交作业时,我在使用 swirl 时遇到了同样的错误。 卸载并重新安装 swirl 本身,curl 和 htrr(也缺少)没有解决问题。唯一真正起作用的是:

      install.packages("openssl")

      还使用 Windows 10 和 R 3.3.3。

      【讨论】:

      • 请在回答之前看看这个。 link
      【解决方案3】:

      当我使用库漩涡时,我也遇到了同样的问题

      经过几次尝试,我发现是因为我没有在R中安装openssl。

      所以:

      install.packages("openssl")
      

      那么,一切正常!

      哦!我使用的是 Windows 10,而不是 Linux

      【讨论】:

        【解决方案4】:

        我删除了httr(直接从我的 R win 库中删除了整个 httr 文件夹)并重新安装了它。然后,从 github 安装顺利

        【讨论】:

          【解决方案5】:

          如果httr lib 丢失,则会出现相同的错误

          尝试:

          install.packages("httr")

          【讨论】:

            【解决方案6】:

            终于想通了。

            我安装了两个不同的 ssl 库,出于某种原因,针对 libcurl4-openssl-dev 构建的 RCurl 包和针对 libcurl4-nss-dev 构建的 curl 包,但我只安装了 openssl 的 CA 密钥,而不是 nss .

            我用 R 中的remove.packages('curl') 解决了我的问题,然后退出 R 并从 shell apt-get remove libcurl4-nss-dev 启动 R 和 install.packages('curl')

            我的错误是使用 RCurl 而不是 httrcurl 来测试 SSL CA 处理,这会导致我很快发现我的 curl 包已链接到错误的 SSL 库。

            【讨论】:

            • 正是我的情况.. 在 Ubuntu 18.04 上救了我的命。谢谢!
            猜你喜欢
            • 2014-09-07
            • 2019-07-01
            • 1970-01-01
            • 2021-04-01
            • 2014-01-31
            • 1970-01-01
            • 2018-08-10
            • 2013-09-13
            • 2013-11-10
            相关资源
            最近更新 更多