Tetsuo Handa
from-****@I-lov*****
2010年 3月 22日 (月) 10:52:29 JST
熊猫です。 Tetsuo Handa さんは書きました: > YUM レポジトリの場合は、メタ情報ファイルは http://tomoyo.sourceforge.jp/ から、 > パッケージファイルはダウンロードサーバからダウンロードされるように .htaccess を > 使って振り分けをしていました。しかし、 APT レポジトリではそのような振り分けが > できないのです。 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=79002 に > あるように、現時点では apt-get でダウンロードする場合には HTTP 302 応答を > 処理してくれないためです。 > > そこで、 > > (1) http://tomoyo.sourceforge.jp/ に全部置く > > 自由にディレクトリ構成を選べる。 > Subversion でアップロードできる。 > > ダウンロードが遅い。 > Subversion レポジトリが膨張する。 > ダウンロード件数にカウントできない。 > > (2)ダウンロードサーバに全部置く > > ダウンロードが速い。 > HTTPでアップロードできる。 > > 自由にディレクトリ構成を選べない。 > ダウンロード件数にメタ情報ファイルの件数も含まれてしまうため不正確になる。 > ↑の「ダウンロード件数にメタ情報ファイルの件数も含まれてしまう」という部分は 間違いでした。ダウンロードサーバ( osdn.dl.sourceforge.jp など)から直接 ダウンロードした場合にはダウンロード件数としてカウントされていませんでした。 http://sourceforge.jp/frs/redir.php を経由してダウンロードした場合のみ カウントされるという仕様のようです。 > (3)第3のサーバに全部置く > > 自由にディレクトリ構成を選べる。 > > ダウンロード件数にカウントできない。 > (会社からもアクセスできるように)SSHを使わずにアップロードできる方法が > 必要になる。 > > の何れかを選ぶ必要に迫られ、(2)にしました。 いろいろ実験してみた結果、 tomoyo.sourceforge.jp では Apache の mod_rewrite が利用できるので、 RedirectMatch (.*)/(.*)\.rpm http://sourceforge.jp/frs/redir.php?f=/tomoyo/44403/$2.rpm の代わりに RewriteEngine On RewriteRule (.*)\.deb /cgi-bin/download.cgi?f=/tomoyo/45071/$1.deb [L] という内容の .htaccess を用意して、 http://tomoyo.sourceforge.jp/cgi-bin/download.cgi?f=/tomoyo/45071/$1.deb が http://sourceforge.jp/frs/redir.php?f=/tomoyo/45071/$1.deb というリクエストを 発行して、その処理結果を返すようにしてやることにより、 apt-get に対して HTTP 302 応答を返さないようにできることが判明しました。 ( download.cgi のソースは http://sourceforge.jp/projects/tomoyo/svn/view/branches/download.c?view=markup&revision=3523&root=tomoyo です。) ということで、 download.cgi を使うことで自由にディレクトリ構成を選びながら、 パッケージ本体はダウンロードサーバ上に置くことができるようになりました。 残る問題は、 http://tomoyo.sourceforge.jp/ からのダウンロード速度が 100〜150KB/秒程度までしか出せないという点ですね。せっかくダウンロード サーバからなら数MB/秒が可能なのに、 tomoyo.sourceforge.jp を経由させることが ボトルネックになってしまうのは残念です。 バイナリ rpm/deb パッケージのユーザがどれくらいいるのかは知りたいけれど、 バイナリ deb パッケージのダウンロードが遅くなるのは避けたいです。 サイズの大きいパッケージ本体はダウンロードサーバに、サイズの小さいメタ情報 ファイルは Subversion に置くことができるようになったので、 (1) mod_rewrite が利用可能になっている (2) download.cgi を動作させることができる (3) cron で svn update が動作するようになっている (4) http://tomoyo.sourceforge.jp/ よりも高速にダウンロードできる という条件を満たすことができる第3のサーバが見つかれば全て解決なのですけれど。