サルではできない、自宅で手軽に、なんちゃってニュースサーバ(perl版)

※ コメントは、適当なニュースグループか、乾燥板メールで。(2007年4月07日)

このページで解説してる改造やスクリプトは、自由に使っていただいてかまいま せんし、自由に改変していただいてかまいません。その際、特に私に断わる必要 はありません。でも、ナイスな改良を思いついたら、教えてくれるとうれしいか も。

更新履歴

基本方針

  1. NNTPサーバには、perlモジュールのNNML-1.14を改造したものを使う。
  2. 配送には、NNML附属のnnmirrorを改造したもの使う。
  3. 非固定IPでドメイン名が必要なら、ダイナミックDNSを使う。

という方針ですが、Windowsの場合はexe版の方 がずっと簡単です。が、他のOS使ってるとか、プログラム改造したいとかなら、 そっちじゃ無理です。こっちを見てください。

インストール

perlのインストール

perlがなければ、perlをインストールしてください。WindowsだとActivePerlが 使えます。方法は例えば、「ActivePerlのインストール方 法 - Windows で perl を使おう!」とか。Cygwin環境やMingw環境のperlで も大丈夫なはず。parでexe化したい人はActivePerlの方がよいかも。

Windows以外なら、大抵は入ってるんじゃないかな? 入ってなかったら何か探し てインストールしてください。

NNMLのインストール

cpanを使って、NNML::Serverをインストールしてください。質問には、好みで答 えればよし。ActivePerl +CPANによるモジュールインストール方法は、まあ探せば何かあります。それ以外のperlで のcpanの使い方も、まあ、探せばあ るはず。

どこに何がインストールされたのかは、インストール画面の最後のあたりで分か ります。後で必要になるのでチェックしといてください。まあ、忘れてても大体 の見当はつきますが。ActivePerlの場合、perlをインストールしたディレクトリ をc:\perlとすると、c:\perl\site\lib\NNMLあたりの下に*.pmが入って、 c:\perl\binあたりにnnmirror.batが入ってるはず。ドキュメントは、 c:\perl\html\site\lib\NNMLとかc:\perl\html\binとか。普通のperlだとhtmlま では作ってくれないかも。perldoc使えってか?

「ActivePerlならcpanじゃなくてPPMでどうだ?」って意見もあるかもしれません が、PPMだと附属のnnmirrorをインストールしてくれないっぽいので、cpanの方 がよさげ。いや、今のバージョンじゃnnmirrorは無くてもいいのか。

スクリプトのダウンロードと展開

exe版と同じ、nnml+0.05をダウンロードして、適 当なディレクトリに展開するだけです。複数の人が使うコンピュータだったり、 公開サーバや相互配送を考えていたりするのなら、セキュリティ的に安全な場所 に置いてください。(nntpサーバ用のパスワードを生書きしたりするから。)

exeファイルは、使わないなら消してよいです。でかいし。parで作ったexeファ イルは、perlインタプリタを内蔵してるので非常に大きいんだわ。

スクリプトの設定

exe版設 定の項目で、hoge.exeをperl hoge.plに読み換えればOK。

NNMLのハック

NNMLにいろいろ手を入れる必要があるんですが、説明が面倒になってきたので、 ハック済みのファイルをNNML+/に置いてます。NNMLがインストールされてる場所 を見付けて、ファイル差し替えてください。(バックアップは取っといてね。)

ハックの内容は、

  1. ActivePerlのための修正(Config.pm)
  2. バグフィクス(Connection.pm、Handle.pm、Active.pm)
  3. 仕様変更のための修正(Connection.pm、Active.pm)

といったあたり。詳しくは、オリジナルと差分取ってみてください。

nnmirrorのパッケージ化

parを使ってexe版で作る都合上、nnmirrorをパッケージ化してます。perl版では 不要なんですが、exe版とソースが別になるのもあれなんで。lib/NNmirror.pmという 名前で置いてますので、どこをどういじったかは、自分で確かめてください。

parによるexe化

perlスクリプトをexeファイルにする方法はいくつかあるんですが、ここではpar を使います。exeファイルが不要な方は、この項は要りません。

parのインストールは適当に探せば何かあると思います。この辺のページだと最 新版のActivePerlじゃ駄目なようなことを書いてるけど、5.8.8.816ではちゃん と動いてます。以前に入れようとしたときは、cygwinやmingwのperlじゃ駄目で、 ActivePerlでppm使って入れたら大丈夫だったような記憶がある。

nn_server.plとnn_users.plをexe化するには、それぞれ、pps.batとppu.batを実行 してください。何やってるかは、中見れば分かるはず。「-M attributes.pm」は、 threads使ったから必要になったのかな?

使う

以降は、exe版の該当する項目で、hoge.exeを perl hoge.plに読み換えればOK。

おわり