2014/10/07(火) [n年前の日記]
#1 [namazu][perl] Text::kakasiその他のインストールをまだ試してたり
ActivePerl 5.16.3 + CPAN でインストールできないか、まだ試してたり。環境は Windows7 x64。
_ぶたときどき真珠〜深沢千尋のブログ〜 Strawberry Perl で Text::Kakasi や、 _あまつぶ: Memo/Text-Kakasi という記事を見かけて、ActivePerl でも試したところ、Text::Kakasi だけはどうにかインストールできた、ような気がするので自分も手順をメモ。
事前に、 _kakasi-2.3.4.zip をDL・解凍して、C:\kakasi にコピーしておくこと。その中に、
DOS窓で cpanp と打つ。cpan じゃなくて cpanp を使うことに注意。以下の入力待ちになる。
以下を打つ。
解凍後のディレクトリ内にある、Makefile.PL をエディタで開いて、修正して保存。自分の環境に合わせたパスを指定しておくこと。
以下を打って、インストール開始。
q を打って、cpanp から抜ける。
モジュールが登録されてるか、一応確認。以下を打つ。
もし、モジュールが登録されてなければ、以下のように、「そのモジュール名、俺には見つけられなかったッス」とエラーが出てくるはず。
実際にコレで動くのか、動作確認したいのだけど。そこらへんの手順は、まだ調べてなかったり。
もう少し頑張れば ppd まで作れるらしいけど。自分、ppd って何だろう、てな状態なので…。
_ぶたときどき真珠〜深沢千尋のブログ〜 Strawberry Perl で Text::Kakasi や、 _あまつぶ: Memo/Text-Kakasi という記事を見かけて、ActivePerl でも試したところ、Text::Kakasi だけはどうにかインストールできた、ような気がするので自分も手順をメモ。
事前に、 _kakasi-2.3.4.zip をDL・解凍して、C:\kakasi にコピーしておくこと。その中に、
- include\libkakasi.h
- lib\*.lib
DOS窓で cpanp と打つ。cpan じゃなくて cpanp を使うことに注意。以下の入力待ちになる。
CPAN Terminal>使い方は、help と打てば出てくる。
以下を打つ。
d Text::Kakasi z Text::Kakasiそれぞれ、
- d hoge ... hoge のソース?のダウンロード。
- z hoge ... hogeの解凍処理+解凍場所を cmd.exe を開く。
解凍後のディレクトリ内にある、Makefile.PL をエディタで開いて、修正して保存。自分の環境に合わせたパスを指定しておくこと。
'INC' => '-IC:/kakasi/include', 'LIBS' => ['-LC:/kakasi/lib -lkakasi'], 'LDDLFLAGS' => '-mdll -L"C:/Perls/Perl516/lib/CORE" -static-libgcc',
- INC に、C:\kakasi\include を指定。ここで kakasi のヘッダファイルの在処を指定してる。
- LIBS に C:\kakasi\lib を指定。ここで kakasi の .lib だのの在処を指定してる。
- LDDFLAGS に、ActivePerlインストールフォルダ\lib\CORE を指定。libgcc_s_dw2-1.dll に依存したバイナリを作らないようにするための指定らしいけど、よく分かってない。
以下を打って、インストール開始。
i Text::Kakasiしばらく待てば、下のようなメッセージが出てくるはず…。
CPAN Terminal> i Text::Kakasi Installing Text::Kakasi (2.04) 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\Text-Kakasi-2.04\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 Text::Kakasi Writing MYMETA.yml and MYMETA.json Running [C:\Perl\site\bin\dmake.exe test]... C:\Perl\bin\perl.exe "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib\lib', 'blib\arch')" t/*.t t/01-func.t .... ok t/02-obj.t ..... ok t/03-encode.t .. ok All tests successful. Files=3, Tests=164, 0 wallclock secs ( 0.05 usr + 0.03 sys = 0.08 CPU) Result: PASS [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\Text-Kakasi-2.04-1412639421.log Module 'Text::Kakasi' installed successfully No errors installing all modulesなんだか途中でエラーっぽいメッセージが出てるけど、「Module 'Text::Kakasi' installed successfully」って言ってるから、一応インストールに成功したのかなと。壊れたファイルがインストールされてるかもしれないけど。
q を打って、cpanp から抜ける。
モジュールが登録されてるか、一応確認。以下を打つ。
perl -MText::Kakasi -e ""-M オプションで、使うモジュール名を指定、-e は、次に続く文を実行せよ、てなオプション。この場合、空文字列だから何もしない。つまり、これを実行して、何も表示されなければ、そのモジュールは登録されてることになる。
もし、モジュールが登録されてなければ、以下のように、「そのモジュール名、俺には見つけられなかったッス」とエラーが出てくるはず。
> perl -MText::NiseKakasi -e "" Can't locate Text/NiseKakasi.pm in @INC (@INC contains: C:/Perl/Perl5163/site/lib C:/Perl/Perl5163/lib .). BEGIN failed--compilation aborted.
実際にコレで動くのか、動作確認したいのだけど。そこらへんの手順は、まだ調べてなかったり。
もう少し頑張れば ppd まで作れるらしいけど。自分、ppd って何だろう、てな状態なので…。
◎ NKF.pmはCPANに無い。 :
同じノリで NKF もインストールしようとしたのだけど、cpan NKF と打ってみたら、「そんなモジュールはねえよ」と言われてしまった。ググってみたら、NKF (MKF.pm?)はCPANに登録されてないらしい。どこから入手すればいいのだろう…。
◎ Perl 5.8.x も入れてみた。 :
HDDの中を漁ってたら、
ググってみたら、その後、
現バージョンの ActivePerl で、Text::Kakasi、NKF、Search::Namazu をインストールする手順を見つけておかないと、手詰まりになるなあ…。
- ActivePerl-5.8.9.826-MSWin32-x86-290470.msi
ググってみたら、その後、
- ActivePerl-5.8.9.827-MSWin32-x86-291969.msi
- ActivePerl-5.8.9.828-MSWin32-x86-294165.msi
- ActivePerl-5.8.9.829-MSWin32-x86-294280-v2.msi
現バージョンの ActivePerl で、Text::Kakasi、NKF、Search::Namazu をインストールする手順を見つけておかないと、手詰まりになるなあ…。
◎ 2017/03/19追記。 :
DropboxのPublicフォルダが死んだのでファイルを置き直し。
[ ツッコむ ]
#2 [perl][windows] Windows上で異なるバージョンのPerlを切り替えたい
_2014/10/08追記。
Strawberry Perl とも切り替えられるbatファイルを書きました。
ActivePerl 5.16.3 と ActivePerl 5.8.x を切り替えて使いたい。環境変数 PATH の中をその都度書き換えれば済みそうではあるけど…。
例えば、
batファイルの中で、
これを繰り返していくと、PATHの最初のほうに Perlのパスがいくつも並んだ状態になってなんか嫌だなと。
ふと、Windows Vista や Windows7 で使える _シンボリック・リンク を使えばいいのではと思えてきた。
例えば、
と思って、切り替え用のbatファイルを書いてみたけれど。mklink は管理者権限じゃないと使えないことをすっかり忘れてました。これではちと不便。でもまあ、頻繁に切り替えるものでもないだろうから、別にコレでもいいか…。
一応batファイルの中身を晒しておきます。
plch.bat
ちなみに、*NIX環境なら perlbrew なる切り替えツールが使えるそうで。
Windows 版の perlbrew は無いのかなとググってみたら、 _May I use Strawberry Perl and ActiveState Perl simultaneously in one computer? - Stack Overflow に情報が。 _App-perlbrew | Perl Package Manager Index (PPM) | ActiveState Code があるよ、との話。
ところが、ActivePerl 5.16 は perlbrew に対応してないようで。今現在入手できる ActivePerl って 5.16 しかないじゃないですか。つまり使えないじゃないですか。なんだかな。
ActivePerl 5.16.3 と ActivePerl 5.8.x を切り替えて使いたい。環境変数 PATH の中をその都度書き換えれば済みそうではあるけど…。
例えば、
- C:\Perls\Perl58
- C:\Perls\Perl516
batファイルの中で、
set PATH=C:\Perls\Perl58\bin;C:\Perls\Perl58\site\bin;%PATH%とすれば、PATHの最初に ActivePerl 5.8.x の指定がくるので、perl -v で表示されるバージョンは 5.8.x になる。つまり Perl 5.8.x を選んで使える状態になると言えばなるのだけど。
これを繰り返していくと、PATHの最初のほうに Perlのパスがいくつも並んだ状態になってなんか嫌だなと。
ふと、Windows Vista や Windows7 で使える _シンボリック・リンク を使えばいいのではと思えてきた。
mklink /d 作成リンク名 元フォルダとすれば、フォルダのシンボリックリンクが作れる。作成リンク名にアクセスすると、元フォルダにアクセスしてるも同然の状態になる。
例えば、
mklink /d C:\Perl C:\Perls\Perl58
mklink /d C:\Perl C:\Perls\Perl516を使い分ければ…。PATH には C:\Perl\bin;C:\Perl\site\bin だけ追加しておいて、それ以上弄らない。後は、C:\Perl が Perl 5.8.x と Perl 5.16.x のどちらを指してるのか変更すればいい。
と思って、切り替え用のbatファイルを書いてみたけれど。mklink は管理者権限じゃないと使えないことをすっかり忘れてました。これではちと不便。でもまあ、頻繁に切り替えるものでもないだろうから、別にコレでもいいか…。
一応batファイルの中身を晒しておきます。
plch.bat
@echo off if "%1"=="58" goto SETPATH1 if "%1"=="516" goto SETPATH2 echo Perlのパスを切り替えます。(mklink /d を使ってシンボリックを張り直し) echo. echo 1 : Perl 5.8 echo 2 : Perl 5.16 echo. set USERINPUTSTR= set /P USERINPUTSTR="切り替えたい番号を選んでください : " if "%USERINPUTSTR%"=="1" goto SETPATH1 if "%USERINPUTSTR%"=="2" goto SETPATH2 echo. echo Usage: plch 58 echo plch 516 goto END :SETPATH1 set PPATH=C:\Perls\Perl58 goto SETPERLDIR :SETPATH2 set PPATH=C:\Perls\Perl516 goto SETPERLDIR :SETPERLDIR @echo on rmdir C:\Perl mklink /d C:\Perl %PPATH% @echo off echo. echo Perlのパスを %PPATH% に設定しました echo. pause :ENDDOS窓を管理者権限で開いて、plch 58 とか plch 516 とか打てば切り替えられる、みたいな。
ちなみに、*NIX環境なら perlbrew なる切り替えツールが使えるそうで。
Windows 版の perlbrew は無いのかなとググってみたら、 _May I use Strawberry Perl and ActiveState Perl simultaneously in one computer? - Stack Overflow に情報が。 _App-perlbrew | Perl Package Manager Index (PPM) | ActiveState Code があるよ、との話。
ところが、ActivePerl 5.16 は perlbrew に対応してないようで。今現在入手できる ActivePerl って 5.16 しかないじゃないですか。つまり使えないじゃないですか。なんだかな。
[ ツッコむ ]
以上、1 日分です。