2013/08/13 FreeBSD9.1でのお話。
プロキシがあるとportsnapコマンド実行に支障が出ることがあります。
とりあえず、環境変数で押さえ込むことができたのでそのメモ書きです。
最低限設定が必要なのは以下の3つになる。
HTTP_PROXYはたぶんおなじみだと思う。HTTP_TIMEOUTについては今回の事があるまで知らなかった。
ソースを見ると、portsnapコマンドが呼び出す /usr/bin/fetch と /usr/libexec/phttpget はこの3つの環境変数を使えるようだ。
以下の形式で設定する。
# setenv HTTP_PROXY "http://proxy.ne.jp:8080"
PROXYに認証情報がいる場合はHTTP_PROXY_AUTHに設定する。理由は後述。
以下の形式で設定する。
# setenv HTTP_PROXY_AUTH "basic:*:userid:password"
BASIC認証でレルムは全てに対応。 HTTP_PROXYに認証情報を入れて以下のような
# setenv HTTP_PROXY "http://userid:password@proxy.ne.jp:8080"
手抜きをしたくなるが、portsnapコマンドで使っている/usr/libexec/phttpgetがダサいつくりのせいで、認証情報入りのURIを正しくパースできない。 そのため、portsnapコマンドを使う場合はHTTP_PROXY_AUTHを使わないといけない。
プロキシがダウンロードファイルを先にウイルス検査するような場合、大きいファイルのダウンロードほど通信に遅延が発生する。 fetchコマンドのソースによると遅延許容時間はデフォルト120秒の模様。
この値はHTTP_TIMEOUTで変更できる。 30分を設定するなら
# setenv HTTP_TIMEOUT 1800
となる。