为什么R提示我并且在`update.packages()`上失败?

时间:2015-09-16 17:46:54

标签: r ubuntu curl libcurl cran

我是R的新手,我自己在Ubuntu 14.04.3(x64)上编译了它。请注意,我与R源代码保持同步:

blong@work:~/Documents/Work/REPOS__svn/R/R-3-2-branch$ svn info |head -n 7
Path: .
Working Copy Root Path: /home/blong/Documents/Work/REPOS__svn/R/R-3-2-branch
URL: https://svn.r-project.org/R/branches/R-3-2-branch
Relative URL: ^/branches/R-3-2-branch
Repository Root: https://svn.r-project.org/R
Repository UUID: 00db46b3-68df-0310-9c12-caf00c1e9a41
Revision: 69384
blong@work:~/Documents/Work/REPOS__svn/R/R-3-2-branch$ svn status -u
Status against revision:  69392

在R的3.2.2分支中运行configuremake已成功完成,我可以在R会话中使用各种包。但是,我想检查一下我的所有库都是最新的。在R 3.2.2中,我正在调用update.packages()。调用该函数时,系统会提示我选择一个CRAN镜像:

CRAN mirror selection dialog

假设一切正常并且这不是问题,我从对话框中选择主(“O-Cloud [https]”)镜像。对话框关闭,我返回到我的R提示符,上面写着“unsupported URL scheme”的重复消息。

同时,我在调用update.packages()

时在我的R会话中收到错误
> getOption("repos")
    CRAN 
"@CRAN@" 
> update.packages()
--- Please select a CRAN mirror for use in this session ---
Error in download.file(url, destfile = f, quiet = TRUE) : 
  unsupported URL scheme
Warning: unable to access index for repository https://cran.rstudio.com/src/contrib:
  unsupported URL scheme
> 

考虑到这可能是HTTPS的一个问题,我尝试了一个非SSL镜像,同样没有任何反应(也许没有更新,但我想要一条消息告诉我这一点)。但是,这次在对话框关闭后,我没有收到第二个“不支持的URL方案”消息:

> update.packages()
--- Please select a CRAN mirror for use in this session ---
Error in download.file(url, destfile = f, quiet = TRUE) : 
  unsupported URL scheme
> 

似乎在引擎盖下,R使用一个名为RCurl的库来完成它的一些HTTP / S交互。据我所知,我使用的是受支持的curl / libcurl版本:

blong@work:~$ curl --version
curl 7.35.0 (x86_64-pc-linux-gnu) libcurl/7.35.0 OpenSSL/1.0.1f zlib/1.2.8 libidn/1.28 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smtp smtps telnet tftp 
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP 

对此有何想法?它似乎与mailing list discussion类似,但我不确定这是一个问题还是我做错了。

1 个答案:

答案 0 :(得分:3)

我不觉得傻。我不是来自非常强大的C / C ++背景。所以make除了跟踪指南等外,并不是真的在我的驾驶室里。

我和同事一起看了这个,我们讨论了在机器上配置R的步骤。实际上,我做到了这一点:

svn checkout https://svn.r-project.org/R/branches/R-3-2-branch ~/R-3-2-branch
mkdir ~/R-3-2-branch.build
cd ~/R-3-2-branch.build
../R-3-2-branch/configure # Returns successfully
make

一切都准备好吧? :)我一定是,因为我可以使用~/R-3-2-branch.build/bin/R并且R会话中的所有内容(除了提示此问题的上述错误)似乎工作得很好。我安装了各种东西,包括CRAN,Bioconductor和GitHub;所以很明显这个问题必须是别的。

哦,而且,我非常确定所有依赖项都是正确可用的(就平台依赖性而言),因为我这样做了:

blong@work:~$ sudo apt-get build-dep r-base

嗯,是的,这是别的!我忘记了 sudo make install

我承认,我不完全确定我执行了哪个订单configureapt-get build-dep r-basemake。但是,忘记sudo make install似乎是罪魁祸首

这一次,我做了完整的序列:

blong@work:~$ cd ~/R-3-2-branch.build
blong@work:~$ ../R-3-2-branch/configure
blong@work:~$ make
blong@work:~$ sudo make install

一切似乎都在R里快乐地运行:

> update.packages()
--- Please select a CRAN mirror for use in this session ---
> 

(出现提示时,我选择了O-Cloud [https]镜像)

谢谢大家的帮助!