[Namazu-users-ja 672] mknmzが止まってしまう

Yasushi.Shimizu shimizu @ i2.inax.co.jp
2006年 2月 1日 (水) 16:53:54 JST


shimizuと申します。

こういう使い方はあまりされないのかもしれませんが、
インデックス作成が止まってしまう現象が起きたので報告しておきます。

現象:
mknmzでのインデックス作成において、
「mknmz: /home/hoge/getfile/xxxx : 
              そのようなファイルやディレクトリはありません」
のようなメッセージを吐いてインデックス作成が停止する。
なお、テンポラリのインデックスファイル(NMZ.xxx.tmp)は
停止時に削除されたようで残っていない。
 namazu ver.2.0.15, 2.0.14, 2.0.12で確認
 OS:Linux

現象の起こる条件:
インデックス対象ファイルのファイル名末尾にスペースが入っている


以下に具体的な例を書きます。

wgetでWebページを再起的に取得。
htmlページからリンクしているsrch.php?key=testのようなページを
wgetが取得しそのままの名前で保存。

index.html
srch.php?key=test1
srch.php?key=test2
srch.php?key=test3
   ・
   ・

mknmzrcには以下のように設定し、
$ALLOW_FILE = ".*\\.(?:$HTML_SUFFIX)|.*\\.txt" . # HTML, plain text
              "|.*\\.php" .  
              "|.*\\.php\\?.*";  

インデックス作成は
 mknmz -U -e -s --config=/home/hoge/nmz/mknmzrc \
                -O /home/hoge/nmz/index  /home/hoge/getfile
 
mknmzの結果、
wgetで取得したファイルのファイル名が
'srch.php?key=test1' のようなとき問題なくインデックス作成続行。
'srch.php?key=test 1' のようなとき問題なくインデックス作成続行。
'srch.php?key=test1 ' のようにファイル名末尾にスペースがある
ファイルに当たると問題の現象が起こる。すなわち、
「mknmz: /home/hoge/getfile/srch.php?key=test1 : 
                  そのようなファイルやディレクトリはありません」
とメッセージを吐いて停止する。

なお、末尾のスペースは取得元のURLに入っていたからで、
wgetは忠実にURLを復元したファイル名を作っているようです。
wget: ver.1.9.1。


この例の場合はとりあえずの対処ですが、
$ALLOW_FILE = ".*\\.(?:$HTML_SUFFIX)|.*\\.txt" . # HTML, plain text
              "|.*\\.php" .  
              "|.*\\.php\\?.*[^ ]"; 
とすることで、問題のファイルを対象外にすることができたので、
インデックス作成が出来ました。
もちろん、問題のファイルは検索対象外になってしまいます。

とりあえず、ご報告まで。





Namazu-users-ja メーリングリストの案内