http://www.eyrie.org/~eagle/faqs/inn.html#S6.2
controlchan(8) っていったいナニ? 何か使えそげなコマンドラインが例示されてるんですが。
http://www.eyrie.org/~eagle/faqs/inn.html#S6.4
記事の feed をするとき、その記事には Xref フィールドがなくてはいけない。ということで、試しに /var/spool/news/articles/cclub/archive で以下のコマンドを実行。*1
% ls | cat | wc -l # -> 67 % grep "Xref" * | wc -l # -> 13
だめじゃん。
inn-1.x のような古いバージョンの頃は、Xref はクロスポストされた記事にのみつけられていたらしい(最近のは全部の記事につける)。そういう記事には、どうにかして Xref ヘッダを加える必要がある、とのこと。
(そういえば、一度「一部の記事しか表示されない」っていう現象が起こって……そのときの記事数ってこの位じゃなかったっけか)
Xref フィールドはそれぞれ次のような感じ。
1:Xref: cclub cclub.news:2 cclub.archives:1 # 古いの 71:Xref: cclub.cc.tut.ac.jp cclub.archives:71 # 新しいの
ということは、Xref を付け足す処理を pseudocode で書くなら、
if grep "^Xref: cclub " then # 古いの s/:Xref: cclub /:Xref: cclub.cc.tut.ac.jp /g else if grep "^Xref: cclub.cc.tut.ac.jp" then # 新しいの. NOP else # 古いバージョンので、Xref なし pwd() =~ m|/var/spool/news/articles/(.+)| $ngname = $1 $ngname =~ tr|/|.| $artnum = basename(filename) # grep "NNTP-Posting-Host" * | wc -l したら ls のと同じだったので s/^(NNTP-Posting-Host: .+)$/\1\nXref: cclub.cc.tut.ac.jp $ngname:$artnum/g; fi
この処理は makehistory(8) もやってくれるんだけど、makehistory(8) はエラーを吐いてしまって使えないので……。
こいつを Perl でちゃい、としてしまえばあっという間? 再帰的にディレクトリを手繰るから ruby (Dir.glob で **/) の方が楽かも。*2
流れは次のようになるか。
- K 西さんのノートに inn-2.2.2 を入れて、現行サーバの記事を全てコピー
- Perl でも Ruby でも何でもいいから Xref フィールドを付け加える
- K 西さんのノートから新サーバに feed
さて、どうだろう。
……その他の解決法としては、「もう inn-2.2.2 のままでいいじゃん」ってのもアリかと。穴が見つかっても、パッチくらい出るでしょ。たぶん。(楽観的だ……)