2014/10/08(水) [n年前の日記]
#1 [namazu][perl] Search::Namazuをインストールしようとしたけど
Windows7 x64 + ActivePerl 5.16.3 で Search::Namazu を cpanp でインストールしようとしてるけど、なかなか難しい。
少しググってみたら、nmz-config はシェルスクリプトらしい。シェルスクリプト…ってことは、このモジュールは、*NIX環境に限定したモジュールなのかな。
_Search-Namazu for Windows でエラー発生: ナマズのブログ で、Makefile.PL を書き換えて試した事例が公開されてた。自分も修正して試してみたり。
やっぱりエラーだらけ。
cpanp d Search::Namazu z Search::Namazu exit i Search::Namazu
- 「nmz-config なんて名前のコマンドはねえよ」とエラーが出てる。
- 「namazu/*.h が見当たらねえぞ」とエラーが出てる。
少しググってみたら、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。解凍。
自分のHDD内を検索したら、
さておき。以下のような出力メッセージになった。
別のDOS窓を開いて、モジュールが登録されているか確認。
_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 installmake じゃなくて、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
さておき。以下のような出力メッセージになった。
> 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\アカウント名\ 以下で。
おそらくは、ExtUtils::FakeConfig とやらを使った形で Makefile を作らせる。
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.96Makefile.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 を眺めると、
Makefile の perl の箇所を眺めると、
試してみたけど、エラーが出る。
ふと、perl Makefile.PL をした際に、
which dmake をしたら、C:\Perl\site\bin\dmake.exe に入ってる模様。ActivePerl が dmake を用意してくれてるっぽい。
make の代わりに、dmake と打ってみた。なんだかそれっぽいメッセージが出てきた。blib\arch/auto/NKF/NKF.dll てのが作られた、のかな?
dmake test をしてみた。
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 )と書いてあったので…。
- cd NKF.mod
- perl Makefile.PL
- make
- 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して、
インストールもできるのかな?
モジュールとして登録されてるだろうか。
Search::Namazu が困ったちゃんだなあ…。コイツがどうにかなれば、Namazu for Windows を動かすために必要な最低限のモジュールが揃うのだろうけど。
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 内を書き換えろ、と書いてある。
Search::Namazu のインストールを再度試した。もちろん Makefile.PL は前述のとおり修正。
出力メッセージがちょっと変わってきた。
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 しか選択肢が無かったのだろうから、仕方ないよな…。
せめて、StrawberryPerl を前提にしてモジュールを用意してあれば良かったのかなと思えてきたり。ActivePerl は過去の版を入手しづらい状態になってしまったので、「ActivePerl 5.8.x はどこからDLできるんでしょう?」てな初っ端のあたりからハマるけど。Starwberry Perl なら、 _Strawberry Perl for Windows - Releases から過去の版も入手できるように見えるので、そういう部分でハマったりはしなかったのかもしれないなと。
昔は ActivePerl の旧版も入手できていたような気がするけど、ActivePerl を選択すること自体がトラップになるとは…。や、ActiveState社も商売が厳しくてこうなったのだろうし、ActivePerl の ppm も当時は便利だったのだろうし、昔は ActivePerl しか選択肢が無かったのだろうから、仕方ないよな…。
[ ツッコむ ]
#2 [perl][windows] ActivePerl や Strawberry Perl を切り替えるbatファイルを書いた
_昨日
、ActivePerl の異なるバージョンを切り替えるbatファイルを書いたけど、もうちょっと頑張れば Strawberry Perl とも切り替えられるかなと思えてきたので試したり。
以下のような場所に、それぞれインストール。
環境変数 PATH に、以下を追加しておく。既に Perlインストールフォルダがいくつか登録されていたら、それらは消しておく。
batファイルは以下の通り。
plch.bat
管理者権限でDOS窓を開いて、plch 58 とか plch 516 とか plch 518 とか、あるいは plch とか打てば、C:\Perl というシンボリックリンクが作られる。perl -v と打ってみて、バージョンが変わってることを確認。
注意事項。事前に C:\Perl というフォルダがあって、中にPerl一式が実体として入ってたら、rmdir C:\Perl で全消去されそうな予感。C:\Perl というシンボリックリンク名じゃなくて、違うリンク名にしておいたほうがまだ安心、かもしれない。
以下のような場所に、それぞれインストール。
- ActivePerl 5.8.x ... C:\Perls\activeperl58\perl
- ActivePerl 5.16.x ... C:\Perls\activeperl516\perl
- Strawberry Perl 5.18.x ... C:\Perls\strawberry518
- C:\Perls\activeperl58\c\bin
- C:\Perls\activeperl516\c\bin
環境変数 PATH に、以下を追加しておく。既に Perlインストールフォルダがいくつか登録されていたら、それらは消しておく。
C:\Perl\c\bin C:\Perl\perl\site\bin C:\Perl\perl\bin
batファイルは以下の通り。
plch.bat
@echo off set PERLPATH1=C:\Perls\activeperl58 set PERLPATH2=C:\Perls\activeperl516 set PERLPATH3=C:\Perls\strawberry518 set PPATH= if "%1"=="58" set PPATH=%PERLPATH1% if "%1"=="516" set PPATH=%PERLPATH2% if "%1"=="518" set PPATH=%PERLPATH3% if not "%PPATH%"=="" goto SETPERLDIR echo Perlのパスを切り替えます。(mklink /d を使ってシンボリックを張り直し) echo. echo 1 : ActivePerl 5.8 echo 2 : ActivePerl 5.16 echo 3 : Strawberry Perl 5.18 echo. set USERINPUTSTR= set /P USERINPUTSTR="切り替えたい番号を選んでください : " if "%USERINPUTSTR%"=="1" set PPATH=%PERLPATH1% if "%USERINPUTSTR%"=="2" set PPATH=%PERLPATH2% if "%USERINPUTSTR%"=="3" set PPATH=%PERLPATH3% if not "%PPATH%"=="" goto SETPERLDIR echo. echo Usage: echo plch 58 echo plch 516 echo plch 518 goto END :SETPERLDIR @echo on rmdir C:\Perl mklink /d C:\Perl %PPATH% @echo off echo. echo Perlのパスを %PPATH% に設定しました echo. :END
管理者権限でDOS窓を開いて、plch 58 とか plch 516 とか plch 518 とか、あるいは plch とか打てば、C:\Perl というシンボリックリンクが作られる。perl -v と打ってみて、バージョンが変わってることを確認。
注意事項。事前に C:\Perl というフォルダがあって、中にPerl一式が実体として入ってたら、rmdir C:\Perl で全消去されそうな予感。C:\Perl というシンボリックリンク名じゃなくて、違うリンク名にしておいたほうがまだ安心、かもしれない。
◎ この手の専用のツールって作れないかな。 :
環境変数PATHの中身を置換できるツールがあれば済むのだろうけど…。誰か作ってないのかな…。もっとも、セキュリティ面でアレな気はするけれど。
ググってみたら、環境変数を置換する方法はあるらしい。 _炎のコマンドプロンプト入門/バッチファイル/環境変数 で解説されてた。
ググってみたら、環境変数を置換する方法はあるらしい。 _炎のコマンドプロンプト入門/バッチファイル/環境変数 で解説されてた。
%[環境変数]:[置換元文字列]=[置換先文字列]%
set NEWPATH=%PATH:C:\Perl=C:\Perls\Perl516% echo %NEWPATH%なんだかbatファイルでもどうにかできそうな気がする。それをシステム全体に再設定できるかは、また別の話だろうけど。
[ ツッコむ ]
以上、1 日分です。