目次

FreeBSDのportsnapコマンドをプロキシ経由で使う方法

2013/08/13 FreeBSD9.1でのお話。

プロキシがあるとportsnapコマンド実行に支障が出ることがあります。

とりあえず、環境変数で押さえ込むことができたのでそのメモ書きです。

設定する環境変数

最低限設定が必要なのは以下の3つになる。

HTTP_PROXYはたぶんおなじみだと思う。HTTP_TIMEOUTについては今回の事があるまで知らなかった。

ソースを見ると、portsnapコマンドが呼び出す /usr/bin/fetch と /usr/libexec/phttpget はこの3つの環境変数を使えるようだ。

HTTP_PROXY

以下の形式で設定する。

# setenv HTTP_PROXY "http://proxy.ne.jp:8080"

PROXYに認証情報がいる場合はHTTP_PROXY_AUTHに設定する。理由は後述。

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を使わないといけない。

HTTP_TIMEOUT

プロキシがダウンロードファイルを先にウイルス検査するような場合、大きいファイルのダウンロードほど通信に遅延が発生する。 fetchコマンドのソースによると遅延許容時間はデフォルト120秒の模様。

この値はHTTP_TIMEOUTで変更できる。 30分を設定するなら

# setenv HTTP_TIMEOUT 1800

となる。