忍者ブログ
やったことの記録 主にlinuxとかperlとか
プロフィール
HN:
隠居SE
性別:
非公開
カテゴリー
P R
ブログ内検索
忍者カウンター
[9] [7] [6] [5] [4] [2] [3] [1]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

WWW::Mechanize::PhantomJSの導入に挫折したので、
もうひとつのCPANモジュールであるWightのインストールに挑戦。

こちらも、先のモジュール同様多くのモジュールを要求されつつも、
こちらはなんとか全てのモジュールをインストールすることができました。

途中、モジュールのバージョンが確認できないなど色々ありましたが、
それについては別途記載します。

次に本体であるPhantomJSですが、こちらはパッケージを本家から、
specファイルを適当にネットから拾ってきて、rpmを作成。
rpmbuild -ba phantomjs.spec
パッケージの中身はソースではなく実行ファイルが入ってたけど、
インストールしてサンプルのJavascriptファイルを読ませたらちゃんと動いた。

 
で、早速perlから実行。
#!/usr/bin/perl
use strict;
use utf8;
use Wight;

my $w=Wight->new;
print "new ok!\n";
exit;
しかし
TypeError: undefined is not an object (evaluating 'phantom.args[0]')

  phantomjs://code/main.js:173 in global code
と表示して応答なしに_| ̄|○ il||l
エラーメッセージで検索すると、
PhantomJSが2.0になった時に仕様変更されたけど、
Wightがメンテされてないので、Wight付属のスクリプトでエラーが出てる模様。
でも、WightがPhantomJSを起動する時に読ませているmain.jsスクリプトを修正しても、
エラーメッセージが消えるだけで応答なしになるのは変わりなし。

デバッグメッセージを入れてWight.pmを追いかけてみると、
Test::SharedForkが古いと言うメッセージが出たので、
同モジュールのインストールを試みると、ExtUtils::MakeMakerが古いと怒られた。
ExtUtils::MakeMakerは本体に組み込まれているのでアップデートを断念したが、
Test::SharedForkはWightに直接必要なモジュールではないため、
Wightインストール時にコンパイルしたTest系のモジュールを調査すると、
Test::Simpleに依存していることを発見したので、
こちらをdowngradeしてみることに。
しかし、そうすると今度はTest::Needsとの依存関係に問題が起きたので、
Test::Needsも合わせてdowngradeしてTest::SharedForkの問題は解決。

応答停止の原因については、
スクリプトがPhantomJSの仕様変更に対応できていないことから、
そもそもメンテされていないせいであろうことを疑い、
PhantoJS 1.98をインストールしたら、無事動くようになりました。

途中、rubyのPoltergeistが必要なのかと疑ったりして、大分回り道しました(ノД`)トホホ・・

一応、Test-Simpleが不用意にアップデートされないよう、
邪道だけど、Wightのspecファイルに依存情報を書き込んだ。
Requires:      phantomjs < 2.0
Requires:   perl-Test-Simple < 1.10

ただ、実のところ問題がすべて解決したわけではなく、
上記の依存情報は上手く機能してないし、
実行時にはセキュリティアラートとか出るし(^^;
でも、今日はここまで。

DARLA notice: 450
Unsafe JavaScript attempt to access frame with URL about:blank from frame with URL file:///usr/local/share/perl5/auto/share/dist/Wight/main.js. Domains, protocols and ports must match.

Unsafe JavaScript attempt to access frame with URL about:blank from frame with URL file:///usr/local/share/perl5/auto/share/dist/Wight/main.js. Domains, protocols and ports must match.

Unsafe JavaScript attempt to access frame with URL about:blank from frame with URL file:///usr/local/share/perl5/auto/share/dist/Wight/main.js. Domains, protocols and ports must match.

#perl #Wight #PhantomJS #sl6
PR
この記事にコメントする
お名前:
タイトル:
文字色:
メールアドレス:
URL:
コメント:
パスワード:   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
Powerd by NINJAブログ / Designed by SUSH
Copyright © 隠居SEの備忘録 All Rights Reserved.
忍者ブログ/[PR]