« 「ECナビ人気ニュース」の中の人たちに会ってきました | トップページ | plagger の謎 »
基本的には、「しげふみメモ:Windowsで簡単にPlaggerをインストールする方法」に書かれているやり方で、Windows 環境に plagger をインストールすることができます。私の手元の環境のいくつかで試してみたのですが、うまくいった環境と、駄目だった環境がありました。駄目な環境は、今までも cpan コマンドでの各種 perl モジュールのインストールに失敗することが多かったので、根本的に何かおかしな状態になっているのだと思います。
で、うまくいかなかった環境でいろいろ調査、試行錯誤を繰り返して、ようやく問題点が見えてきました。 誰かの参考になるかもしれないので、何が問題だったのかを、書いておきます。
AtivePerl をインストールする場合、はじめてインストールする場合は、そのままインストーラの指示にしたがってインストールすればいいのですが、すでに ActivePerl を使っていて、新しいバージョンに入れ直すときは注意しないといけないことがあります。それは、古いバージョンをアンインストールせずに、新しいバージョンをインストールしてしまうと、新旧の環境が混在してしまって、思わぬ罠にはまること。
私の場合、ActivePerl 5.8.0 Build 806 がすでにインストール済みの環境で Active Perl 5.8.4 Build 810 をそのままインストールしてしまったため、いくつか問題が発生しました。例えば、コマンドプロンプトから perl -v を実行すると、perl 5.8.4 の方が動いていることが確認できるのですが、ppm コマンドを実行すると、ActivePerl の版数が 5.8.0 と表示されたりします。そもそも新旧混在していること自体がまずい訳ですが、(たとえ混在していなかったとしても)ActivePerl 5.8.0 の下では、plagger で必要なモジュールのうちのいくつかのインストールに失敗するようです。
とりあえず、問題が複雑化するのを避けるため、ActivePerl (のインストール済みの版全て)をいったん完全にアンインストールして、最新の ActivePerl をインストールします。
Visual Studio (のうち、少なくとも Visual C++)をインストールしてある環境で ActivePerl をインストールすると、デフォルトでは、Visual C++ 付属の nmake.exe が make コマンドとして選択されます。で、nmake の path は、
C:\Program Files\Microsoft Visual Studio 8\VC\nmake.exe
のように空白文字(スペース)を含む文字列になります。cpan コマンド経由で perl モジュールをインストールする場合、この nmake が使われる訳ですが、パス名に空白文字があるのが原因で nmake.exe の起動(パスの解決)に失敗するようで、結局、インストールに失敗することが多いです(インストール時に make しなくてもいいものは、インストールに成功しますが、make 必須のものはインストールに失敗します)。
この nmake 問題を解決しておかないと、perl を使う上で後々困ることになるので、ActivePerl をインストールしたら、すぐに以下の作業をしておきます。
どういう作業かというと、nmake.exe のフルパス名を、いわゆる short filename 形式(MS-DOS形式)で表現するとどうなるかを調べ、そのパスを環境変数 PATH に追加しておきます(nmake.exe のフルパス名ではなく、nmake.exe のあるディレクトリ(フォルダ)のフルパス名の方を設定します。このディレクトリには、Cコンパイラ cl.exe もあります。いくつかの cpan モジュールのインストールで、この cl.exe も使われます)。
ただし、Visual Studio の複数のバージョンが同居している環境では、さらに注意が必要です。plagger をインストールする場合は、Visual Studio 2005 (Express Editiopn を含む)の nmake や cl をそのまま使えばいいのですが、cpan モジュールのいくつかは、Visual C++ 6 の cl を使うことが前提のものもありますので、Visual C++ 6 の方の nmake のあるディレクトリの方に PATH を張っておきます(少なくとも cpan コマンドを使うとき。cpan を使い終わったら、Visual Studio 2005 の方に PATH を戻しておきましょう。ちょっと面倒くさいですが)。
参考: makeとCコンパイラ
上記の nmake 問題とも関係あるのですが、cpan コマンドでの Net_SSLeay.pm のインストールには、Visual C++ 6 の方の cl が必要です。Visual Studio 2005 の cl では make に失敗します(いちばん最初のコンパイルでいきなりエラーが出て、その後ぼろぼろ。これは Windows 用の OpenSSL ソースパッケージが Visual Studio 6 の使用を前提に作られているのが原因。Visual Studio 2005 のことまでは考慮されていません)。ただし、ppm コマンドでは問題なくインストールできます。あるいは、すでに build 済みの ssleay32.dll をどこかからか調達してきて、sysytem32 フォルダに放り込んだ状態で cpan すれば、Visual Studio 2005 しか持ってない人でも何とかなる可能性があります。
あらかじめ Win32用の OpenSSL を独自にインストールしている場合(関連: 「[観] OpenSSL 0.9.8 の Win32 環境用ライブラリを自力でビルドする方法」)は、nmake問題解決済みの状態でもインストールに失敗することがあります。インストールしようとしている Net_SSLeay.pm の仮定している OpenSSL (の ssleay32.dll) の版数と、独自インストール済みの OpenSSL の版数が一致する場合は、ppm コマンドで Net_SSLeay.pm を入れてしまっても問題はありません。問題があるのは、版数が一致しないとき。Net_SSLeay.pm の前提としている OpenSSL の版数の方が古い場合は、古い OpenSSL に戻せばいいように見えるのですが、OpenSSL はもろにセキュリティに絡んでくるので、下手に古いのに戻すのは危険です。新しい OpenSSL に対応した Net_SSLeay.pm が出るまで待った方がいいでしょう(OpenSSL の API は滅多なことでは変わらないので、新しい OpenSSL でも問題なく Net_SSLeay.pm は動くと思います。ただ、cpan コマンド経由でのインストールだと、版数が違うと怒られて、インストールが止まってしまうんですよね。手動でインストールすればいいのかも)。とりあえず、最新の Net_SSLeay.pm と OpenSSL 0.9.8b は問題なく共存できています。
投稿者: tsupo 2006.08.29 午後 12:08 | 固定リンク | | | | |
この記事のトラックバックURL:
この記事へのトラックバック一覧です: Windows 環境に plagger をインストールする場合の注意点: