Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
13
Help us understand the problem. What is going on with this article?
@ch7821

Rのパッケージインストール時のプロキシ設定

More than 1 year has passed since last update.

Rのパッケージダウンロードでプロキシの設定にはまったので覚書。

対象環境

  • R-3.5.1 for Windows 64 bit
  • RStudio 1.1.463 - Windows 64bit
  • Windows Server 2008 64bit
  • インターネット接続にはプロキシ認証が必要

現象

install.packages("pkgname")を実行すると、407 Proxy Authentication Requiredが返る(RStudioの画面は"Cannot open ")。

対処法

まずはRStudioで(Rコンソールでもrguiでも可)を以下を試して接続可能か確認する。

proxy_url = "http://user:pass@proxyhost:proxyport"
Sys.setenv("http_proxy" = proxy_url)
Sys.setenv("https_proxy" = proxy_url)

curlGetHeaders("http://www.google.com/") # URLはなんでもいいのでこれで200が返るか試す

これで通るなら以下のようにすればパッケージダウンロードができるようになる。

options(download.file.method = "libcurl")
install.packages("pkgname")

毎回やるのが面倒なら、以下のようにプロファイルと環境変数ファイルを作成する。

file.edit('~/.Rprofile')
file.edit('~/.Renviron')
.Rprofile(既存なら追記)
options(download.file.method = "libcurl")
.Renviron(既存なら追記)
http_proxy="http://user:pass@proxyhost:proxyport"
https_proxy="http://user:pass@proxyhost:proxyport"

確認できたこと

パッケージのダウンロードには、download.file()関数を使用しているらしい。そして少なくともWindows版ではデフォルトのhttp通信method(HTTPリクエストメソッドのことではなく使用するAPI)が"wininet"で、Windows OSのWinInet関数を使用する。そしてこの関数とプロキシサーバの相性が悪いときにこれにハマる。おそらくdownload.file()はプロキシの認証情報もOS(資格情報)から取得しているので、グループポリシーで認証情報を保存できない(つまりIEを起動するたびに認証情報を入力しなければならないようになっている)場合、認証情報なしでプロキシにリクエストを投げて407が返る。環境変数から認証情報を取得してくれればよいものを、どうやらそういう実装にはなっていない。
methodを"WinInet"以外にすれば、そのAPIを使用した実装次第で環境変数から認証情報を取ってきてくれるということっぽい。

というわけで今回は、download.file()関数のmethodを"libcurl"にしたらプロキシ認証できた。今の所は残念ながらRStudioでは動的にプロキシ認証情報を渡せないらしいので、ファイルに書いておくしかない。

参考資料

13
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ch7821
主に自分のメモ用に使わせていただいております。。。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
13
Help us understand the problem. What is going on with this article?