やったことの記録
主にlinuxとかperlとか
プロフィール
HN:
隠居SE
性別:
非公開
最新記事
(12/12)
(09/28)
(09/26)
(09/25)
(09/21)
P R
ブログ内検索
忍者カウンター
2025/04/20 (Sun)
07:25:27
[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
2017/05/29 (Mon)
12:05:11
WightでPhantomJS
WWW::Mechanize::PhantomJSの導入に挫折したので、
もうひとつのCPANモジュールであるWightのインストールに挑戦。
こちらも、先のモジュール同様多くのモジュールを要求されつつも、
こちらはなんとか全てのモジュールをインストールすることができました。
途中、モジュールのバージョンが確認できないなど色々ありましたが、
それについては別途記載します。
次に本体であるPhantomJSですが、こちらはパッケージを本家から、
specファイルを適当にネットから拾ってきて、rpmを作成。
インストールしてサンプルのJavascriptファイルを読ませたらちゃんと動いた。
で、早速perlから実行。
エラーメッセージで検索すると、
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ファイルに依存情報を書き込んだ。
ただ、実のところ問題がすべて解決したわけではなく、
上記の依存情報は上手く機能してないし、
実行時にはセキュリティアラートとか出るし(^^;
でも、今日はここまで。
#perl #Wight #PhantomJS #sl6
もうひとつの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