Windows 環境に plagger をインストールする場合の注意点

観測気球

収集物の記録書庫 a data archive of collection -- collectible toys

[要旨] Windows 環境に plagger をインストールするにあたって発生した問題点をメモっておきます。
[キーワード] plagger,perl,nmake,ActivePerlの問題点

Windows 環境に plagger をインストールする場合の注意点

基本的には、「しげふみメモ:Windowsで簡単にPlaggerをインストールする方法」に書かれているやり方で、Windows 環境に plagger をインストールすることができます。私の手元の環境のいくつかで試してみたのですが、うまくいった環境と、駄目だった環境がありました。駄目な環境は、今までも cpan コマンドでの各種 perl モジュールのインストールに失敗することが多かったので、根本的に何かおかしな状態になっているのだと思います。

で、うまくいかなかった環境でいろいろ調査、試行錯誤を繰り返して、ようやく問題点が見えてきました。 誰かの参考になるかもしれないので、何が問題だったのかを、書いておきます。

ActivePerl の問題

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 をインストールします。

nmake問題

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コンパイラ

Net_SSLeay.pm 問題

上記の 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 | 固定リンク | このエントリーをはてなブックマークに追加 | このエントリを del.icio.us に登録 このエントリの del.icio.us での登録状況 | このエントリを Buzzurl に追加このエントリの Buzzurl での登録状況 | このエントリをlivedoorクリップに登録 このエントリのlivedoorクリップでの登録状況 このエントリをlivedoorクリップに登録している人の数 | 酢鶏巡回中

楽天市場


品揃え豊富で安い!NTT-X Store


アマゾンわくわく探検隊

トラックバック

この記事のトラックバックURL:

この記事へのトラックバック一覧です: Windows 環境に plagger をインストールする場合の注意点:

コメント

ワード

ニッセン

fujisan.co.jp

楽天市場