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

Fir*_*her 21 proxy r

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

> utils:::menuInstallPkgs()
--- Please select a CRAN mirror for use in this session ---
Warning: unable to access index for repository http://cran.opensourceresources.org/bin/windows/contrib/2.12
Warning: unable to access index for repository http://www.stats.ox.ac.uk/pub/RWin/bin/windows/contrib/2.12
Error in install.packages(NULL, .libPaths()[1L], dependencies = NA, type = type) :
    no packages were specified
In addition: Warning message:
In open.connection(con, "r") :
    cannot open: HTTP status was '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
  • 保持不变

我是否以正确的方式使用正确的命令?

小智 20

您有两种选择:

  1. 使用--internet2或setInternet2(TRUE)并在"Internet选项"的控制面板中设置代理详细信息
  2. 不要使用--internet2或setInternet2(FALSE),而是指定环境变量

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

从R版本3.2.0开始,该setInternet2功能可以设置互联网连接设置并在同一个R会话中更改它们.无需重启.


当使用选项2时,指定用户名和密码的一种方式(很好且紧凑)是http_proxy ="http:// user:password@proxy.example.com:8080 /"

在过去,我最幸运的是选项2