如何告诉R解释器如何使用代理服务器?

21
我正在尝试让在Windows上运行的R程序从互联网下载一些包,但由于无法正确使用必要的代理服务器,下载失败。当我尝试使用Windows菜单选项Packages > Install package(s)...并选择一个CRAN镜像时,输出文本为:

> utils:::menuInstallPkgs()
---请选择用于此会话的CRAN镜像---
警告: 无法访问http://cran.opensourceresources.org/bin/windows/contrib/2.12的仓库索引
警告: 无法访问http://www.stats.ox.ac.uk/pub/RWin/bin/windows/contrib/2.12的仓库索引
Error in install.packages(NULL, .libPaths()[1L], dependencies = NA, type = type) :
    未指定任何软件包
另外: 警告信息:
In open.connection(con, "r") :
    无法打开:HTTP状态为“407 Proxy Authentication Required”

我知道代理服务器的地址和端口,也知道自动配置脚本的地址。我不知道认证叫什么,但在使用代理(在浏览器和某些其他应用程序中)时,我需要在弹出的对话框中输入用户名和密码。
为设置代理,我尝试了以下每个选项:
  • Sys.setenv(http_proxy="http://proxy.example.com:8080")
  • Sys.setenv("http_proxy"="http://proxy.example.com:8080")
  • Sys.setenv(HTTP_PROXY="http://proxy.example.com:8080")
  • Sys.setenv("HTTP_PROXY"="http://proxy.example.com:8080")

对于认证,我同样尝试将http_proxy_user环境变量设置为:

  • ask
  • user:passwd
  • 不改动

我是否正确地使用了这些命令?


1
看起来不错。你也试过使用 --internet2 选项启动 R(我猜是在 Windows 上吧)吗? - Dirk Eddelbuettel
@Dirk E.:是的,我检查了一下,并发现我从开始菜单快捷方式运行 R 的选项设置为使用“--internet2”选项。(是的,它在Windows上;我现在已经编辑了问题,以使其清晰明了。) - Firefeather
1
好的,你也可以尝试在文件Renviron或者甚至是你的安装范围内的Renviron.site中设置键值对环境变量。具体请参考help(Startup) - Dirk Eddelbuettel
@Dirk E.:当我将它放入我的Renviron.site时,仍然出现同样的错误;HTTP_PROXYHTTP_PROXY_USER是由Renviron.site文件填充的。 - Firefeather
4个回答

20
你有两个选择:
  1. 使用--internet2或setInternet2(TRUE)并在控制面板中的Internet选项中设置代理详细信息
  2. 不使用--internet2或setInternet2(FALSE),但指定环境变量

编辑:一个技巧是,如果你在会话中运行setInternet2(TRUE)并尝试使用它(例如install.packages('reshape2')),如果失败,则不能在1和2之间更改主意。 你必须重新启动R会话。

从R版本3.2.0开始,setInternet2函数可以设置Internet连接设置并在同一R会话中更改它们。无需重新启动。


当选择第二个选项时,指定用户名和密码的一种方式(紧凑而简洁)是http_proxy="http://user:password@proxy.example.com:8080/"

在过去,我在选项2上的成功率最高。


+1. 我无法让选项1正常工作,但是选项2却能解决问题。谢谢! - Firefeather

4

如果你想在使用R时每次都使用internet2,可以将以下行添加到Rprofile.site文件中,该文件位于R.x.x\etc\Rprofile.site

utils::setInternet2(TRUE)

根据 https://docs.tibco.com/pub/enterprise-runtime-for-R/6.0.0/doc/html/Language_Reference/utils/setInternet2.html ,自 R 3.3.0 起,已被废弃。 - Tiziano

0

我已经解决了编辑文件.Renviron的问题,如为R设置代理所述。

已编辑

基于setInternet2语句的解决方案在最近的R版本中不起作用,因为setInternet2已被宣布过时。

我正在使用4.2.1版本(在Win 11Pro上),而以前的版本从未出现任何问题。

因此,为了解决问题,需要修改一些配置文件,以修复代理问题,不仅适用于软件包安装,还适用于访问远程资源(例如我的边界地图)。

关于“为R设置代理”的问题收集了很多解决方案。我发现this one解决了我的两个问题(软件包安装和远程资源),并详细说明了如何逐步编辑文件.Renviron

对我来说,基于自定义文件Renviron.site的其他解决方案都不起作用。


请明确说明您将评论转化为问题,并给予评论作者信用。如果我误解了,您的解决方案实际上只是链接,请标记为重复,而不是使用答案帖子链接到其他问题。如果这不是重复,请解释差异并调整答案。 - Yunnosch
抱歉,我的意图不是为了赚取积分而采取行动,而只是为了提供更新的参考,因为这个问题的答案不能用于更新版本的R。 由于我不知道如何将一个问题分类为重复的,并且我不是stackoverflow的专家,也许最好删除我的帖子? - Tiziano
我正在尝试帮助你。如果你不知道“标记为重复”的意思,我会详细解释一下。(如果我错了,请告诉我,这可能对你和我不同....)自从声望达到15分以后,你应该有权利标记帖子。请在这里查看 https://stackoverflow.com/help/privileges 你应该能够在帖子上提出其中一个标记是“重复”。你可以设置它,并提供一个链接到你认为提供了解决方案的Q/A。只有当它真正有解决这里描述的问题的解决方案时才能这样做。请阅读并尝试,然后让我知道。 - Yunnosch
我没有得到“此问题的答案不能与更新版本的R一起使用”的详细信息。但这可能是一个受欢迎的贡献(我缺乏技术知识...)。您可以创建一个参考现有答案并在其上解释某些内容的答案。如果需要才能应用否则您链接的答案(否则无法帮助),那么解释和链接就可以了。不是重复。但是,该解释尚未包含在您的答案中。请添加它。也许除了我之外的其他用户可以告诉是否重复,并会发表有益评论。 - Yunnosch
我已经找到了 DUPLICATE 标志(实际上,这并不是一个隐藏选项,只是我不够自信给出这样的指示,也没有研究如何做。谢谢你的鼓励)。 - Tiziano
显示剩余6条评论

-3

install.packages("RCurl")

这将解决你的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接