Namazu-win32-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gcnmzがC以外のドライブで動かない



芳賀と申します。

件名の通り、C以外のドライブでgcnmzがエラーを出して止まります。
Namazu 2.0.12 for win32 をデフォルトでインストールしています。
環境はWINDOWS2000、ActivePerlはbuild633です。


C:\test>gcnmz
Usage: gcnmz [options] <target>...
--help show this help and exit.
-b, --no-backup do not backup original file.
-v, --verbose verbose mode.
-q, --quiet quiet mode.
C:\>gcnmz
Usage: gcnmz [options] <target>...
--help show this help and exit.
-b, --no-backup do not backup original file.
-v, --verbose verbose mode.
-q, --quiet quiet mode.
のように、Cドライブ上ではカレントディレクトリにかかわらず動作しますが、
他のドライブでは、

N:\>gcnmz
Can't locate nmzidx.pl in @INC (@INC contains: C:/Perl/lib C:/Perl/site/lib . /n
amazu/share/namazu/pl) at C:\namazu\bin/gcnmz line 11.

のようになり、動作しません。

原因の推測ですが、gcnmzのソースを見ると、10行目に、

my $PKGDATADIR = $ENV{'pkgdatadir'} || "/namazu/share/namazu";
push(@INC, $PKGDATADIR . "/pl");

とあるのですが、PKGDATADIRという環境変数は通常のインストールでは定義されていないようです。
それでNドライブ上で動作させたときのエラーメッセージで表示されているように、
/namazu/share/namazu/pl
が@INCに追加されるのみになっています。

Cドライブ上では、おそらくperlが
C:/namazu/share/namazu/pl
と勝手に読み替えてくれて正常に動作しているのでしょうが、他のドライブ上では
そのドライブの/namazu/share/namazu/plを探しに行って結局nmzidx.plを見つけられていないようです。

対策としては、gcnmzの当該部分を書き換える、
あるいは環境変数PKGDATADIRを定義するということになりそうです。
(私の環境では両方で動作確認できました)

以上、報告まで。