port コマンドは必要なファイルの取得時にインターネット上のサイトへアクセスに行きますが、HTTP Proxy の用意されている環境であれば、適切に設定を行うことで、Firewall を超えることも可能です。
Firewall 越えの設定に対し、注意すべき点は以下の2点です。なお、この情報は、Mac OS X 10.6.1(Snow Leopard)に基づいています。他のOSバージョンでは異なるかもしれません。
1) RSYNC_PROXY 環境変数で HTTP Proxy を設定する
port コマンドは rsync(1) を使って自身の情報更新などを行います。そこで rsync コマンドが Firewall を超えられるように、RSYNC_PROXY 環境変数へ HTTP Proxy サーバの情報を設定します。
例えば、HTTP Proxy のサーバ名が、proxy.example.com、待ち受けポート番号が8080 であるとします。bash や zsh を使っている場合には、次のように設定すればよいでしょう。
% export RSYNC_PROXY=proxy.example.com:8080
Proxy サーバを URL 形式で指定してはいけません。例えば、proxy.example.com の前に http:// をつけたり、また、8080 の後ろに / をつけたりすると、rsync が適切に処理できないので、注意しましょう。詳しくはrsync のマニュアルページを参照してください。2) RSYNC_PROXY を sudo 実行時に引き継げるようにする
port コマンドでは、sync アクションなどの実行を sudo 経由で行うことが一般的です。しかし、デフォルトの sudo 設定では、RSYNC_PROXY 環境変数の値は引き継がれません。引き継がせる為には、sudo の挙動を管理している /etc/sudoers ファイルを変更する必要があります。具体的に、このファイルへ以下の行を追記します。
Defaults env_keep += "RSYNC_PROXY"
/etc/sudoers の変更には visudo コマンドを使いましょう% sudo visudo
変更を行う際、適当なエディタを使って /etc/sudoers を直接変更してはいけません。このファイルのパーミション設定を間違えると sudo が使えなくなってしまいます。万が一設定を間違えてしまい、sudo が使えなくなった場合には、/Applications/Utilities にある Disk Utility アプリケーションを使って、パーミションの修復を行いましょう。 /etc/sudoers ファイルを含むディスク(例えば、Macintosh HD)を選択し、「Repair DiskPermissions」ボタンを選択することで、パーミションを適切に戻す事ができます。
以上の設定を行うことで、Firewall で区切られたネットワーク内からも MacPorts が利用できるようになります。
なお、上記のうち、特に visudo 関連の情報に関しては、勤務先の同僚から情報を頂きました。感謝いたします。
0 件のコメント:
コメントを投稿