2009/11/01

Firewall で遮断されたネットワーク内から MacPorts を利用する

MacPortsは Mac OS X 上でのオープンソースソフトウェア活用を便利にしてくれるプロジェクトです。port コマンド一つで、各種ソフトウェアのパッケージ管理や依存性の解決、また MacOS X 特有パッチの適用など、適切に取り仕切ってくれます。

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 件のコメント:

コメントを投稿