mieki256's diary



2014/10/09(木) [n年前の日記]

#4 [perl][windows][namazu] Strawberry Perl + Namazu for Windows で動作テスト

ActivePerl 5.16.x では、NKF.pm だか NKF.dll が正常動作しないので Namazu for Windows を動かせなかったけど。Strawberry Perl 5.18.x ならどうなるのか気になったので試してみたり。

Namazu for Windows の動作に必要、かつ、cpan でインストールできるモジュールは、以下の通り、だったような気がする。
cpan File::MMagic
cpan MP3::Info
cpan IO::stringy
cpan OLE::Storage_Lite

.zip や .tar.gz をDLして、C:\MinGW\msys\1.0\home\アカウント名\ 以下でビルド?できたモジュールは、以下の通り。
ExtUtils::FakeConfig は、以下のような感じ。だったと思う。少し記憶が怪しいけど。
wget http://search.cpan.org/CPAN/authors/id/M/MB/MBARBON/ExtUtils-FakeConfig-0.12.zip
unzip ExtUtils-FakeConfig-0.12.zip
cd ExtUtils-FakeConfig
perl Makefile.PL
nmake
nmake test
nmake install

Text::Kakasi は、 _2014.10.07の日記 と似たような手順で作業できた。
wget http://search.cpan.org/CPAN/authors/id/D/DA/DANKOGAI/Text-Kakasi-2.04.tar.gz
tar zxvf Text-Kakasi-2.04.tar.gz
cd Text-Kakasi-2.04
(Makefile.PLを修正。INC,LIBS,LDDLFLAGSのパス指定を変更)
perl Makefile.PL
dmake
dmake test
dmake install
だったような気がする。

NKFは、 _nkf Network Kanji Filter プロジェクト日本語トップページ - SourceForge.JP から、nkf-2.1.3.tar.gz をDLして解凍。
cd nkf-2.1.3\NKF.mod
perl Makefile.PL
dmake
dmake test
dmake install

あと、Search::Namazu というモジュールも必要らしいけど、これはビルドしてもエラーが出てインストールできなかった。とりあえず、Search::Namazu 無しでどの程度動くのか試してみようかなと。

さて、この状態で、cd C:\namazu\pltests\ をして、perl alltests.pl を実行してみた。

結構「PASS」が出てきて喜んだけど、やっぱり問題が。
PASS: mknmz-18.pl
FAIL: idxdiff-1.pl
FAIL: idxdiff-3.pl
PASS: namazu-1.pl
...
====================
2 of 43 tests failed
====================
惜しい…! 2つほどPASSしてくれなかった。test-log に結果が残ってるので確認してみると…。
  *** starting idxdiff-1.pl
diff c:/namazu/pltests/idx1/NMZ.p c:/namazu/pltests/idx2/NMZ.p
diff c:/namazu/pltests/idx1/NMZ.pi c:/namazu/pltests/idx2/NMZ.pi
  *** starting idxdiff-3.pl
diff c:/namazu/pltests/idx5/NMZ.p c:/namazu/pltests/idx6/NMZ.p
diff c:/namazu/pltests/idx5/NMZ.pi c:/namazu/pltests/idx6/NMZ.pi
  *** ..\bin\namazu.exe --help 
本来ここで「diff 〜」が表示されなければOK、ということなのだろうか。わからんけど。

エラーは出たものの、これってつまり、Search::Namazu モジュールがインストールできてなくても、ある程度は動く、ということだろうか? それとも、Search::Namazu が無いと、全てのテストをPASSしない、ということなのだろうか?

ところで。
MP3::Info
IO::stringy
OLE::Storage_Lite
をインストールしたら、perl alltests.pl 実行時に、一太郎文書コンバータのオプションダイアログが一々開かずに処理をしてくれたのだけど。どれかのモジュールが、そのあたりをイイ感じに処理してくれているのだろうか?

idxdiff-*.plについて調べる。 :

idxdiff-1.pl と idxdiff-3.pl を開いて眺めてみた。
  • idxdiff-1.pl は、idx1/NMZ.* と idx2/NMZ.* を比較して、違うファイルがあったら 1(= 失敗)を返す。どれも同じファイルなら 0(= 成功)を返す。
  • idxdiff-3.pl は、idx5/NMZ.* と idx6/NMZ.* を比較して、違うファイルがあったら 1(= 失敗)を返す。どれも同じファイルなら 0(= 成功)を返す。

WinMerge を使って、idx1/ と idx2/、idx5/ と idx6/ を比較してみた。たしかに、NMZ.p、NMZ.pi の内容が違っている。

また、idx*/ は、alltests.pl を実行した時に自動生成される。

こちらとしては、「idx1/NMZ.* と idx2/NMZ.* は違いがないよ。テストにPASSしたよ」という結果が出てくることを期待しているわけだけど。しかし実際には、idx1/NMZ.* と idx2/NMZ.* の中は一部が違ってる。

要するに、「idxdiff-*.pl が失敗ステータスを出してるのだから、idxdiff-*.pl の中で変な動作になってるのだな」と考えるのは早計で、実際は、idx*/NMZ.* を自動生成する時に、予想外の動作になってる可能性が高いわけで。

ちなみに、ActivePerl 5.8.9 に切り替えて同じテストをしてみたところ、以下のような状態だった。
  • idx1/NMZ.p と idx2/NMZ.p は同じ。
  • idx1/NMZ.pi と idx2/NMZ.pi は同じ。
  • idx5/NMZ.p と idx6/NMZ.p は同じ。
  • idx5/NMZ.pi と idx6/NMZ.pi は同じ。

てなわけで、Strawberry Perl を使うと、NMZ.p、NMZ.pi が意図通りに生成されない状態になる模様。

さて、idx1/ だの idx2/ だのを自動生成してるのは、どの .pl なのだろう。grep をかけてみた感じでは、mknmz-1.pl、mknmz-2.pl が自動生成してるらしい。中身をざっと眺めてみたけど…何が何やら。

ActivePerl 5.8.9 の出した test-log と、Strawberry Perl 5.18 の出した test-log を見比べてみた。何か登録されてるモジュール数が違うんじゃないかと思ったけれど、別にそういうわけでもないような。

もちろん、NKFのバージョンなどは違っていて、ActivePerl側は 2.07、StrawberryPerl側は2.13 だけど…。もしかしてそこが原因だったりするのかな。NKF 2.07 と 2.13 は動作が微妙に違っていて、出力される index も違ってくるとか? そこを合わせれば解決する?

試しに、 _nkf Network Kanji Filter プロジェクト日本語トップページ - SourceForge.JP から、nkf207.tar.gz をDLしてきて、C:\MinGW\msys\1.0\home\アカウント名\ 以下でビルドして、その状態でテストしてみた。…やはり idxdiff-*.pl でエラーが出る。idx1/ と idx2/ の中の、NMZ.p、NMZ.pi が一致してない。NKFのバージョンを合わせれば問題解決するわけではなさそうだなと。

Strawberry Perl のバージョンを変えてみる。 :

そういや、Strawberry perl 5.18 で動作確認してるけど、現在の推奨バージョンは 5.20 なんだよな…。そちらもインストールしてみようか。

と思ったら。strawberry-perl-5.20.1.1-32bit.msi を実行したところ、「古い版が入ってるからインストールできねえよ」と怒られた。今の Strawberry Perl って、異なるバージョンをインストールできないのか…。5.8.9 と 5.18 は共存ができたのに…。

仕方ないので、Strawberry Perl 5.18 をアンインストールしてから、5.20 をインストール。

5.18 の時と同じようにモジュールをインストールしていったけど、Text::Kakasi の時に大量の警告が。
Warning: .drectve `-defaultlib:MSVCRT ' unrecognized
Warning: corrupt .drectve at end of def file
これがずらずらと表示される。dmake test は PASS と表示されるのだけど…。とりあえず無視してそのままインストール。

cd C:\namazu\pltests\ して、perl alltests.pl を実行。…警告が出てくる。
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LC_ALL = "ja_JP.SJIS",
        LANG = "ja_JP.SJIS"
    are supported and installed on your system.
perl: warning: Falling back to the system default locale ("Japanese_Japan.932").
  *** starting alltests.pl
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LC_ALL = "ja_JP.SJIS",
        LANG = "ja_JP.SJIS"
    are supported and installed on your system.
perl: warning: Falling back to the system default locale ("Japanese_Japan.932").
PASS: env.pl
ja_JP.SJIS なんて無いよ、と言われてるのだろうか。Perl 5.20 からそのあたりの定義が変わったのかな…?

仕方ないので、set LANG=ja_JP.SJIS を、set LANG=Japanese_Japan.932 に変えてみたり。これって、後で何か問題が起きそうだよなあ…。既存の .pl が、ja_JP.SJIS があることを前提にして書かれてたりしそうだし。

とりあえず、結果は…。
C:\namazu\pltests>perl alltests.pl
  *** starting alltests.pl
PASS: env.pl
PASS: mknmz-1.pl
...
PASS: mknmz-18.pl
FAIL: idxdiff-1.pl
FAIL: idxdiff-3.pl
FAIL: namazu-1.pl
FAIL: namazu-2.pl
FAIL: namazu-3.pl
PASS: namazu-4.pl
FAIL: namazu-5.pl
PASS: namazu-6.pl
...
PASS: namazu-12.pl
FAIL: namazu-cgi-1.pl
FAIL: namazu-cgi-2.pl
PASS: namazu-cgi-3.pl
...
PASS: namazu-cgi-12.pl
====================
8 of 40 tests failed
====================
ダメだこりゃ。

意味も分からず SET LANG=ja_JP.EUC-JP にしてみたけど結果は同じ。

Strawberry Perl のバージョンを上げたら動作が変わってしまったということは、過去の版を使えばテストが通ったりするのだろうか?

Strawberry Perl 5.16.3.1 をインストールして試してみた。
> perl alltests.pl
  *** starting alltests.pl
PASS: env.pl
PASS: mknmz-1.pl
...
PASS: mknmz-18.pl
PASS: idxdiff-1.pl
PASS: idxdiff-3.pl
PASS: namazu-1.pl
...
PASS: kakasi-3.pl
===================
All 43 tests passed
===================
おお。通った…。

Strawberry Perl 5.8.9.5 をインストールして試してみた。しかし、こちらはそもそも Text::Kakasi がビルドできない。

Namazu for Windows + ActivePerl じゃなくて、Namazu for Windows + Strawberry Perl でも動作するなら…。Namazu for Windows が、仮に Perl の特定バージョンでしか動かない状況だとしても、Strawberry Perl の古い版なら入手可能だからなんとかなるかな、てなことを思って試していたのですけど。ちょっとなんとかなりそうな雰囲気っぽいかもしれず。

でも、Search::Namazu が入らないのがちと気になりますけど。

この記事へのツッコミ

Re: Strawberry Perl + Namazu for Windows で動作テスト by 名無しさん    2014/10/11 22:12
Strawberry Perlの5.18以降はなにかおかしいですね。こちらではWin32::Unicode::ConsoleがテストにFAILしてインストールできないのでバージョンを5.16.3.1から上げられません。
Re: Strawberry Perl + Namazu for Windows で動作テスト by opengl2772    2015/01/27 05:09
Search::Namazu は Namazu for Windows を実行するのに必須ではありません。
Re: Strawberry Perl + Namazu for Windows で動作テスト by opengl2772    2015/01/27 05:11
Namazu for Windows では、ja_JP.SJIS か C しかサポートしていません。
日本語なら ja_JP.SJIS しか選択肢はありません。
Re: Strawberry Perl + Namazu for Windows で動作テスト by opengl2772    2015/01/27 05:23
一太郎文書コンバータを使うのは、Office を使って変換する OLE フィルタを使った場合です。
記憶が不確かですが、OLE::Stoage_Lite をインストールと別フィルタを使って処理するので、一太郎文書コンバータは使われず、ダイアログは出なくなります。

以上です。

過去ログ表示

Prev - 2014/10 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project