#注意 この記事はMinGW + msys 環境でのレポートです。普通はActivePerlでPPMダウンロードしとけばTkやWxは簡単にダウンロードできます。
どうやらperlをCPANだけ使ってインストールするのは環境によっては難しい場合があるようだ。そこで使われる代替手段がPPMらしい。
cpanの設定がミスってなければ以下のコマンドで簡単にPPMモジュールはインストールできるだろう。
$ cpan install PPM
そしてコンソールからppmと打って、PPMの対話形式コンソールに移行すれば成功。
>PPM
ただちょっと自分がインストールしたPPMは古かったようで、リポジトリの追加の仕方が若干違う。参考サイト
# 新バージョン PPM> rep add DevelopHelp http://ppd.develop-help.com/ppd/ # 旧バージョン PPM> set repository DevelopHelp http://ppd.develop-help.com/ppd/
TkモジュールのPPMを保持しているサイトはbribesというところらしいので以下のようにやってみる
PPM> set repository bribes http://www.bribes.org/perl/ppm/ PPM> set save PPM> install Tk Install package 'Tk?' (y/N): y Installing package 'Tk'... Error installing package 'Tk': Read a PPD for 'Tk', but it is not intended for this build of Perl (msys-64int-5.8)
ダメですかそうですか。。。
ならばWxはどうじゃろう。ちょうどwxWidgets発祥の地であるイギリスにPPMを用意してある所があった
wxPerl PPM Binaries
PPM> set repository wxPerl http://www.wxperl.co.uk/repository PPM> set save PPM> install Wx Installing package 'Wx'... Element 'IMPLEMENTATION' cannot contain a child element 'REQUIRE' at /usr/lib/perl5/site_perl/5.8/PPM.pm line 1677. Can't locate object method "rvalidate" via package "PPM::XML::PPD::REQUIRE" at /usr/lib/perl5/site_perl/5.8/PPM/XML/ValidatingElement.pm line 38.
ん〜?このエラーはなんなんだろう。しかし少し近づいた感じはする。けどもやっぱしmsys + mingw でPerlをやるのは限界があるなあ。
とくにこの表示が出たときはmsysではどうにもできない。
fatal error: netinet/in.h: No such file or directory
参考サイト
msysは完全なwin32のperlを再現するつもりはないそうだ。だからwin32の部分に依存したパッケージとかはインストールできない。Cygwinなら出来る場合もある。
そしてperlをWindowsで使う際はたいていActivePerlを使うようで、ActivePerlからMinGWをインストールする(!)。つまり本当はActivePerlからdmake, MinGW等をインストールしてwxPerlに進むべきだということだ。
追記:ActivePerlにはGUIのPPM管理アプリケーションが付属するので、それを使えばかなり楽にwxPerlやTkをインストールすることができる。
別にwxPerlが使えないから何か問題というわけではないんだけど(…C++で書けばいいのですよトゥットゥルー)
追記 1 2012/01/23:WindowsでPerlを使う場合はStrawberry Perlがいいです。ラリー・ウォールもそう言ってます。具体的にはCPANがかなり使いやすくなります。
追記2 なんでmsysでwxPerlができないのか?
それはCPANで配布されるwxPerlが内部でPOSIX向けのヘッダファイルを見ており、msysはPOSIX完全互換でないためビルドできないからである。msys + MinGWというのは最小限度のPOSIX互換層&Windowsネイティブ実行ファイルを作るための環境である。ActivePerlはその辺を調整しているはず。