mieki256's diary



2014/10/08(水) [n年前の日記]

#1 [namazu][perl] Search::Namazuをインストールしようとしたけど

Windows7 x64 + ActivePerl 5.16.3 で Search::Namazu を cpanp でインストールしようとしてるけど、なかなか難しい。
cpanp
d Search::Namazu
z Search::Namazu
exit
i Search::Namazu

少しググってみたら、nmz-config はシェルスクリプトらしい。シェルスクリプト…ってことは、このモジュールは、*NIX環境に限定したモジュールなのかな。

_Search-Namazu for Windows でエラー発生: ナマズのブログ で、Makefile.PL を書き換えて試した事例が公開されてた。自分も修正して試してみたり。
use ExtUtils::MakeMaker;

# my $cflags = `nmz-config --cflags`;
# my $libs = `nmz-config --libs`;

WriteMakefile(
    'NAME' => 'Search::Namazu',
    'VERSION_FROM' => 'Namazu.pm',
    'INC' => '-IC:/namazu/include',
    'LIBS' => ['-LC:/namazu/lib -lnmz'],
    'clean' => {'FILES' => "t/index"}
);
C:\namazu\ に Namazu for Windows を解凍して置いてあるけど、その中に include/ と lib/ があるからソレを指定する、ということらしい。

やっぱりエラーだらけ。
CPAN Terminal> i Search::Namazu

Installing Search::Namazu (0.96)
Running [C:\Perl\bin\perl.exe -e use strict; BEGIN { my $old = select STDERR; $|++; select $old; $|++; $0 = shift(@ARGV); my $rv = do($0); die $@ if $@; } C:\home\mieki256\.cpanplus\5.16.3\build\Search-Namazu-0.96\Makefile.PL]...
Set up gcc environment - 3.4.5 (mingw-vista special r3)
Checking if your kit is complete...
Looks good
Have \perl\lib
Want \perls\perl516\lib
Your perl and your Config.pm seem to have different ideas about the
architecture they are running on.
Perl thinks: [lib]
Config says: [MSWin32-x86-multi-thread]
This may or may not cause problems. Please check your installation of perl
if you have problems building this extension.
Warning (mostly harmless): No library found for -lkernel32
Warning (mostly harmless): No library found for -luser32
Warning (mostly harmless): No library found for -lgdi32
Warning (mostly harmless): No library found for -lwinspool
Warning (mostly harmless): No library found for -lcomdlg32
Warning (mostly harmless): No library found for -ladvapi32
Warning (mostly harmless): No library found for -lshell32
Warning (mostly harmless): No library found for -lole32
Warning (mostly harmless): No library found for -loleaut32
Warning (mostly harmless): No library found for -lnetapi32
Warning (mostly harmless): No library found for -luuid
Warning (mostly harmless): No library found for -lws2_32
Warning (mostly harmless): No library found for -lmpr
Warning (mostly harmless): No library found for -lwinmm
Warning (mostly harmless): No library found for -lversion
Warning (mostly harmless): No library found for -lodbc32
Warning (mostly harmless): No library found for -lodbccp32
Warning (mostly harmless): No library found for -lcomctl32
Warning (mostly harmless): No library found for -lmsvcrt
Generating a dmake-style Makefile
Writing Makefile for Search::Namazu
Writing MYMETA.yml and MYMETA.json
[ERROR] MAKE failed:  cp Namazu.pm blib\lib\Search\Namazu.pm
Running Mkbootstrap for Search::Namazu ()
C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod -- 644 Namazu.bs
C:\Perl\bin\perl.exe C:\Perl\lib\ExtUtils\xsubpp  -typemap C:\Perls\Perl516\lib\ExtUtils\typemap  Namazu.xs > Namazu.xsc && C:\Perl\bin\perl.exe -MExtUtils::Command -e mv -- Namazu.xsc Namazu.c
C:\Perl\site\bin\gcc.exe -c  -IC:/namazu/include        -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -DPERL_TEXTMODE_SCRIPTS -DUSE_SITECUSTOMIZE -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -D_USE_32BIT_TIME_T -DHASATTRIBUTE -fno-strict-aliasing -mms-bitfields -O2       -DVERSION=\"0.96\"  -DXS_VERSION=\"0.96\"  "-IC:\Perls\Perl516\lib\CORE"   Namazu.c
C:\Perl\bin\perl.exe -MExtUtils::Mksymlists \
     -e "Mksymlists('NAME'=>\"Search::Namazu\", 'DLBASE' => 'Namazu', 'DL_FUNCS' => {  }, 'FUNCLIST' => [], 'IMPORTS' => {  }, 'DL_VARS' => []);"
Set up gcc environment - 3.4.5 (mingw-vista special r3)
C:\Perl\site\bin\dlltool.exe --def Namazu.def --output-exp dll.exp
C:\Perl\site\bin\g++.exe -o blib\arch\auto\Search\Namazu\Namazu.dll -Wl,--base-file -Wl,dll.base -mdll -L"C:\Perls\Perl516\lib\CORE" Namazu.o   C:\Perls\Perl516\lib\CORE\perl516.lib C:\namazu\lib\libnmz.a dll.exp
C:\namazu\lib\libnmz.a(libnamazu.o): In function `nmz_msg':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/libnamazu.c:217: undefined reference to `libintl_vsnprintf'
C:\namazu\lib\libnmz.a(libnamazu.o): In function `nmz_set_dyingmsg_sub':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/libnamazu.c:235: undefined reference to `libintl_vsnprintf'
C:\namazu\lib\libnmz.a(util.o): In function `nmz_warn_printf':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:293: undefined reference to `libintl_fprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:296: undefined reference to `libintl_vfprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:300: undefined reference to `libintl_fprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:284: undefined reference to `libintl_fprintf'
C:\namazu\lib\libnmz.a(util.o): In function `nmz_debug_printf':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:323: undefined reference to `libintl_fprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:326: undefined reference to `libintl_vfprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:330: undefined reference to `libintl_fprintf'
C:\namazu\lib\libnmz.a(util.o): In function `nmz_strerror':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:578: undefined reference to `libintl_gettext'
collect2: ld returned 1 exit status
dmake.exe:  Error code 129, while making 'blib\arch\auto\Search\Namazu\Namazu.dll'


[ERROR] Unable to create a new distribution object for 'Search::Namazu' -- cannot continue

[ERROR] IPC::Run version '0.55' is required on MSWin32 in order to capture buffers. The logfile generated may not contain any useful data, until it is installed

*** Install log written to:
  C:\home\mieki256\.cpanplus\install-logs\Search-Namazu-0.96-1412724320.log

Error installing 'Search::Namazu'
Problem installing one or more modules
*** You can view the complete error buffer by pressing 'p' ***
何が起きてるのかさっぱり分からない。なんだか色んなものが足りてないような雰囲気だけど。

ExtUtils::FakeConfig をインストール。 :

「ExtUtils::FakeConfig を使えば〜」というコメントを見かけたので、何のツールかよく分からないけどインストール。

_MinGW + MSYS 環境で Text::Kakasi と MeCab をビルドする - あまつぶ@はてなダイアリー に従って作業。

MinGW/MSYS をインストール済みの環境なので、C:\MinGW\msys\1.0\ 以下で作業する。

C:\MinGW\msys\1.0\home\アカウント名\perl-modules\ でフォルダを作成。 _Mattia Barbon / ExtUtils-FakeConfig - search.cpan.org から、ExtUtils-FakeConfig-0.12.zip をDL。解凍。
wget ExtUtils-FakeConfig-0.12.zip
unzip ExtUtils-FakeConfig-0.12.zip
cd ExtUtils-FakeConfig-0.12
perl Makefile.PL
nmake
nmake install
make じゃなくて、nmake を使うのがポイントらしい。nmake.exe をどこかから入手する必要があるけど。

自分のHDD内を検索したら、
  • C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\nmake.exe
  • C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\nmake.exe
  • C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\nmake.exe
  • C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\nmake.exe
といったあたりが見つかった。Visual Studio 2010 Express とか Visual Studio 2013 Express をインストールすると、nmake.exe も入手できるのかもしれない。

さておき。以下のような出力メッセージになった。
> perl Makefile.PL

Set up gcc environment - 3.4.5 (mingw-vista special r3)
Checking if your kit is complete...
Looks good
Have \perl\lib
Want \perls\perl516\lib
Your perl and your Config.pm seem to have different ideas about the
architecture they are running on.
Perl thinks: [lib]
Config says: [MSWin32-x86-multi-thread]
This may or may not cause problems. Please check your installation of perl
if you have problems building this extension.
Generating a nmake-style Makefile
Writing Makefile for ExtUtils::FakeConfig
Writing MYMETA.yml and MYMETA.json
Using: 'nmake'
> nmake

Microsoft (R) Program Maintenance Utility   Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.

        C:\Perl\bin\perl.exe script/fill_template.pl spec/Config_ap.txt spec/ap_mingw_510.txt blib\lib/Config_m.pm cc=gcc pack_name=Config_m
cp lib/Config_u.pm blib\lib\Config_u.pm
cp lib/ExtUtils/FakeConfig.pm blib\lib\ExtUtils\FakeConfig.pm
cp lib/Config_m.pod blib\lib\Config_m.pod
> nmake install

Microsoft (R) Program Maintenance Utility   Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.

Installing C:\Perls\Perl516\html\site\lib\Config_m.html
Installing C:\Perls\Perl516\html\site\lib\Config_u.html
Installing C:\Perls\Perl516\html\site\lib\ExtUtils\FakeConfig.html
Installing C:\Perls\Perl516\site\lib\Config_m.pm
Installing C:\Perls\Perl516\site\lib\Config_m.pod
Installing C:\Perls\Perl516\site\lib\Config_u.pm
Installing C:\Perls\Perl516\site\lib\ExtUtils\FakeConfig.pm
        C:\Perl\bin\perl.exe script\make_implib.pl --output-dir="C:\Perls\Perl516\lib\CORE" --target=mingw "C:\Perls\Perl516\bin\perl516.dll"
Appending installation info to C:\Perls\Perl516\lib/perllocal.pod
.pm が、ActivePerl 5.16.x のインストールフォルダの中にコピーされたっぽい。

別のDOS窓を開いて、モジュールが登録されているか確認。
perl -MExtUtils::FakeConfig -e""
登録はされてるっぽい。

Search::Namazuのインストールに再挑戦。 :

_NOKUBI Takatsugu / Search-Namazu-0.96 - search.cpan.org から、Search-Namazu-0.96.tar.gz をDLして試してみる。

C:\MinGW\msys\1.0\home\アカウント名\ 以下で。
wget http://search.cpan.org/CPAN/authors/id/K/KN/KNOK/Search-Namazu-0.96.tar.gz
tar zxvf Search-Namazu-0.96.tar.gz
cd Search-Namazu-0.96
Makefile.PL を修正して保存。

おそらくは、ExtUtils::FakeConfig とやらを使った形で Makefile を作らせる。
perl -MConfig_m Makefile.PL
nmake
エラーが出た。
> nmake

Microsoft (R) Program Maintenance Utility   Version 1.50
Copyright (c) Microsoft Corp 1988-94. All rights reserved.

cp Namazu.pm blib\lib\Search\Namazu.pm
Running Mkbootstrap for Search::Namazu ()
        C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod -- 644 Namazu.bs
        C:\Perl\bin\perl.exe C:\Perl\lib\ExtUtils\xsubpp  -typemap C:\Perls\Perl516\lib\ExtUtils\typemap  Namazu.xs > Namazu.xsc && C:\Perl\bin\perl.exe -MExtUtils::Command -e mv -- Namazu.xsc Namazu.c
        gcc -c  -IC:/namazu/include  -O2 -DWIN32 -DPERL_IMPLICIT_CONTEXT -DPERL_MSVCRT_READFIX -O2    -DVERSION=\"0.96\"  -DXS_VERSION=\"0.96\" -DHASATTRIBUTE "-IC:\Perls\Perl516\lib\CORE"
   Namazu.c
        C:\Perl\bin\perl.exe -MExtUtils::Mksymlists  -e "Mksymlists('NAME'=>\"Search::Namazu\", 'DLBASE' => 'Namazu', 'DL_FUNCS' => {  }, 'FUNCLIST' => [], 'IMPORTS' => {  }, 'DL_VARS' => []);"
Set up gcc environment - 3.4.5 (mingw-vista special r3)
NMAKE : fatal error U1073: don't know how to make 'C:\Perls\Perl516\lib\CORE\libperl510.a'
Stop.
「C:\Perls\Perl516\lib\CORE\libperl510.a がねえよ」と言われてる? libperl510.a って何だ?

NKF.pmのインストールに挑戦。 :

よく分かってないけど、 _nkf Network Kanji Filter プロジェクト日本語トップページ - SourceForge.JP から nkf-2.1.3.tar.gz をDLして解凍。INSTALL.j を眺めると、
Perl モジュールを作るには、
    make perl
です。NKF.mod 下にできます。そちらで、perl Makefile.PL; make
でもOk。 Perl 5 以上で動作します。5.6, 5.8 で動作確認しています。
と書いてあった。

Makefile の perl の箇所を眺めると、
perl:
	( cd NKF.mod ; \
	$(PERL) Makefile.PL  ; \
	make ; \
	make test )
と書いてあったので…。
  1. cd NKF.mod
  2. perl Makefile.PL
  3. make
  4. make test
をすればいいんじゃないかなと想像。

試してみたけど、エラーが出る。
> perl Makefile.PL

Set up gcc environment - 3.4.5 (mingw-vista special r3)
Have \perl\lib
Want \perls\perl516\lib
Your perl and your Config.pm seem to have different ideas about the
architecture they are running on.
Perl thinks: [lib]
Config says: [MSWin32-x86-multi-thread]
This may or may not cause problems. Please check your installation of perl
if you have problems building this extension.
Generating a dmake-style Makefile
Writing Makefile for NKF
Writing MYMETA.yml and MYMETA.json

> make

make: rem: Command not found
make: *** [blibdirs] Error 127
もしかして、「make なんてコマンドは知らねえよ」と言われているのだろうか。 C:\MinGW\msys\1.0\bin\make.exe にあるはずなんだけど…。それとも、「rem って何だ? 知らねえコマンドだなオイ」と言われてるのだろうか。

ふと、perl Makefile.PL をした際に、
Generating a dmake-style Makefile
と言われてることに気がついた。「dmake 用のフォーマットで Makefile を作ったぜ」と言ってるのかな。

which dmake をしたら、C:\Perl\site\bin\dmake.exe に入ってる模様。ActivePerl が dmake を用意してくれてるっぽい。

make の代わりに、dmake と打ってみた。なんだかそれっぽいメッセージが出てきた。blib\arch/auto/NKF/NKF.dll てのが作られた、のかな?

dmake test をしてみた。
> dmake test

C:\Perl\bin\perl.exe "-Iblib\lib" "-Iblib\arch" test.pl
Can't load 'blib\arch/auto/NKF/NKF.dll' for module NKF: load_file:メモリ ロケーションへのアクセスが無効です。 at C:/Perl/lib/DynaLoader.pm line 191.
 at test.pl line 29.
Compilation failed in require at test.pl line 29.
BEGIN failed--compilation aborted at test.pl line 29.
dmake.exe:  Error code 130, while making 'test_dynamic'
エラーが出てるらしい。

Strawberry Perl でも試してみた。 :

ActivePerl ならハマるけど Strawberry Perl ならすんなり行く、ということはないのかなと思えてきたので、試しにインストール。先日は strawberry-perl-5.20.1.1-32bit.msi をインストールしたけど、今回は strawberry-perl-5.18.4.1-32bit.msi をインストールしてみた。

Text::Kakasi は、 _昨日 と同じような手順でインストールできたように見える。動くかどうかは分からないけど。

Search::Namazu は、ActivePerl と同じような感じのエラーが出た。libperl510.a がどうのこうのとエラーが出てる。何者なんだ、libperl510.a って。

NKF.pm のほうは、C:\MinGW\msys\1.0\home\アカウント名\perl-modules\ 以下にDLして、
tar zxvf nkf-2.1.3.tar.gz
cd nkf-2.1.3
cd NKF.mod
perl Makefile.PL
dmake
dmake test
と打ってみたら、ずらずらと「OK」「OK」と表示された。なんか上手く行ってるっぽい?

インストールもできるのかな?
dmake install
> dmake install

Files found in blib\arch: installing files in blib\lib into architecture dependent library tree
Installing C:\Perls\strawberry518\perl\site\lib\auto\NKF\NKF.dll
Installing C:\Perls\strawberry518\perl\site\lib\NKF.pm
Appending installation info to C:\Perls\strawberry518\perl\lib/perllocal.pod
できてるかもしれない。

モジュールとして登録されてるだろうか。
perl -MNKF -e ""
エラーは出ない。登録されてるっぽい。

Search::Namazu が困ったちゃんだなあ…。コイツがどうにかなれば、Namazu for Windows を動かすために必要な最低限のモジュールが揃うのだろうけど。

libperl510.a 云々。 :

_Re^2: Missing nmake - 64bit, Windows 7 に、libperl510.a でエラーが出る問題について情報が。site\lib\Config_m.pm 内を書き換えろ、と書いてある。
libperl='libperl510.a'
↓
libperl='libperl518.a'
ファイルは読み取り専用になってるので、書き込み可にしてから修正して保存。

Search::Namazu のインストールを再度試した。もちろん Makefile.PL は前述のとおり修正。
cd Search-Namazu-0.96
perl -MConfig_m Makefile.PL
nmake

出力メッセージがちょっと変わってきた。
> nmake

Microsoft (R) Program Maintenance Utility Version 12.00.21005.1
Copyright (C) Microsoft Corporation.  All rights reserved.

Skip blib\lib\Search\Namazu.pm (unchanged)
Running Mkbootstrap for Search::Namazu ()
        C:\Perl\perl\bin\perl.exe -MExtUtils::Command -e chmod -- 644 Namazu.bs
        gcc -c  -IC:/namazu/include  -O2 -DWIN32 -DPERL_IMPLICIT_CONTEXT -DPERL_MSVCRT_READFIX -O2    -DVERSION=\"0.96\"  -DXS_VERSION=\"0.96\" -DHASATTRIBUTE "-IC:\Perls\strawberry518\perl\lib\CORE"   Namazu.c
        dlltool --def Namazu.def --output-exp dll.exp
        g++ -o blib\arch\auto\Search\Namazu\Namazu.dll -Wl,--base-file -Wl,dll.base -s -mdll -L"C:\Perls\strawberry518\perl\lib\CORE" Namazu.o   C:\Perls\strawberry518\perl\lib\CORE\libperl518.a C:\namazu\lib\libnmz.a dll.exp
C:\namazu\lib\libnmz.a(libnamazu.o): In function `nmz_msg':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/libnamazu.c:217: undefined reference to `libintl_vsnprintf'
C:\namazu\lib\libnmz.a(libnamazu.o): In function `nmz_set_dyingmsg_sub':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/libnamazu.c:235: undefined reference to `libintl_vsnprintf'
C:\namazu\lib\libnmz.a(util.o): In function `nmz_warn_printf':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:293: undefined reference to `libintl_fprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:296: undefined reference to `libintl_vfprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:300: undefined reference to `libintl_fprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:284: undefined reference to `libintl_fprintf'
C:\namazu\lib\libnmz.a(util.o): In function `nmz_debug_printf':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:323: undefined reference to `libintl_fprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:326: undefined reference to `libintl_vfprintf'
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:330: undefined reference to `libintl_fprintf'
C:\namazu\lib\libnmz.a(util.o): In function `nmz_strerror':
C:/msys/1.0/home/www/namazu-2.0.21/nmz/util.c:578: undefined reference to `libintl_gettext'
collect2.exe: error: ld returned 1 exit status
NMAKE : fatal error U1077: 'C:\Perl\c\bin\g++.EXE' : return code '0x1'
Stop.
libperl510.a 云々でエラーは出てないようだけど、やっぱり色々言われてる。C:/msys/1.0/home/www/ 以下に namazu-2.0.21/ というフォルダがあるつもりで何かしてるあたりが気になる。libnmz.a とやらが作られた時の環境が表示されてるのかな?

Namazu for Windows は導入がとにかく大変。 :

「Namazu for Windows は、ActivePerl 5.8.x でしか動きません」と仰る理由がよく分かったような気になりました。他のバージョンではダメだ。こりゃ大変だ。

せめて、StrawberryPerl を前提にしてモジュールを用意してあれば良かったのかなと思えてきたり。ActivePerl は過去の版を入手しづらい状態になってしまったので、「ActivePerl 5.8.x はどこからDLできるんでしょう?」てな初っ端のあたりからハマるけど。Starwberry Perl なら、 _Strawberry Perl for Windows - Releases から過去の版も入手できるように見えるので、そういう部分でハマったりはしなかったのかもしれないなと。

昔は ActivePerl の旧版も入手できていたような気がするけど、ActivePerl を選択すること自体がトラップになるとは…。や、ActiveState社も商売が厳しくてこうなったのだろうし、ActivePerl の ppm も当時は便利だったのだろうし、昔は ActivePerl しか選択肢が無かったのだろうから、仕方ないよな…。

以上です。

過去ログ表示

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