如何通过代理安装R包[user + password]

时间:2013-01-25 14:27:44

标签: r

我需要身份验证才能使用互联网,比如这些是我的变量:

  1. 代理:1ncproxy1
  2. 港口:80
  3. Loggin:MyLoGiN
  4. 通过:MyPaSs
  5. 如何在R及其插件包中安装软件包? 这样可以起到以下作用:

    install.packages("TSA", dependencies=TRUE)
    

    没有互联网连接失败?

    我试过了:

    Sys.setenv("ftp_proxy" = "1ncproxy1","ftp_proxy_user"="MyLoGiN","ftp_proxy_password"="MyPaSs")#Port = 80
    

    但我明白了:

    Warning: unable to access index for repository http://cran.ma.imperial.ac.uk/src/contrib
    # or 
    cannot open: HTTP status was '407 Proxy Authentication Required'
    

    非常感谢,

5 个答案:

答案 0 :(得分:3)

您可能在Windows上,因此我建议您查看安装时随附的“R on Windows常见问题解答”,尤其是Question 2.19: The Internet download functions fail。您可能需要使用--internet2选项(IIRC)重新启动R才能使代理设置生效。

我总觉得这很麻烦。另一种方法是安装代理感知的webdownloader,例如wget(作为Windows二进制文件),您可以在主目录的文件中设置代理选项。这一切都来自记忆,我想上次我面对这样的代理是在2005年所以YMMV。

答案 1 :(得分:2)

+1朱巴,上面。这对我有用:

$ export http_proxy=http://username:password@the-proxy.mycompany.com:80
$ R
> install.packages("quantmod")

答案 2 :(得分:1)

我尝试安装漩涡包,并遇到了同样的问题 - 授权代理。

经过一些实验,我找到了决定。 可能是我的回答对任何人都有帮助。 在Windows 7上:

  1. 设置1个或更多(如果需要)env变量http_proxy(如果需要,可以使用https_proxy和ftp_proxy)(如果你不t know how - read there http://www.computerhope.com/issues/ch000549.htm ) It看起来那样 env variables for proxy

  2. 格式http_proxy =" http:// Proxyusername:ProxyUserPassw @ proxyServName:ProxyPort"

  3. 使用' @ '而不是%40

  4. 在RStudio中工具 - >全局选项 - >包发布复选框"使用Internet Explorer库/代理进行HTTP"

答案 3 :(得分:0)

正如@juba所说,我想你想设置http_proxy。来自?download.file

  

可以通过HTTP代理传输设置用户名和密码   环境变量http_proxy_user,格式为user:passwd。   或者,http_proxy可以是这种形式   的 “http://用户:pass@proxy.dom.com:8080 /”

所以,试试:Sys.setenv(http_proxy="http://MyLoGiN:MyPaSs@1ncproxy1:80")

请注意:

  

必须在下载代码之前设置这些环境变量   首次使用:以后不能通过调用Sys.setenv来修改它们。

所以你最好在.Rprofile

中调用它

答案 4 :(得分:0)

正如Jeff Taylor所写,R可以间接使用代理服务器。您需要同时为http和https协议指定代理服务器,如下所示:

$ export http_proxy=http://user:pass@proxy_server:port
$ export https_proxy=http://user:pass@proxy_server:port
$ R
> install.packages("<package_name>")

我刚刚测试了此解决方案,它就像一个魅力。 Jeff的回答是正确的,但不幸的是,在大多数情况下,答案是不完整的,因为当今大多数服务器都可以通过https进行访问。