fugafuga.write

日々のログ

CentOS に PhantomJS をインストールする

CentOS 6.5 にインストールする。

PhantomJS ってなに?

画面が無い(Headless)Webブラウザ。 スクリーンキャプチャとったり、 Webページを操作したり、 jQueryのようにDOMを操ったり、 ページのロード時間を計測したり、 ネットワークモニタリングしたりできる。

Jenkins などの CI ツールと連携して、E2Eの自動テストに使われたりするのが主な用途らしい。 私の場合、Javascript で動的に変化するWebページの情報を取得するのに使う予定です。

インストールする

公式によると、Windows や MacOSX なんかはバイナリが配布されているが、Linux に関してはソースからビルドするのが主流のよう。

まず、必要なライブラリを yum でインストールする。
インストール済みのものは勝手にアップデートがかかります。

% sudo yum -y install gcc gcc-c++ make flex bison gperf ruby \
  openssl-devel freetype-devel fontconfig-devel libicu-devel sqlite-devel \
  libpng-devel libjpeg-devel

git で ソースコード を clone してきてからビルドする。

% git clone git://github.com/ariya/phantomjs.git
% cd phantoms
% git checkout 2.0
% ./build.sh

30分くらい時間かかるけどええのか〜?と聞いてくるのでよければyでインストール開始。

ビルドには結構時間がかかるので、皿洗い、掃除、洗濯などをして待つ。

make[1]: Leaving directory `/home/tokoyax/phantomjs/src/qt/qtwebkit/Source/WTF'
cd Source/JavaScriptCore/ && ( test -e Makefile.JavaScriptCore || /home/tokoyax/phantomjs/src/qt/qtbase/bin/qmake /home/tokoyax/phantomjs/src/qt/qtwebkit/Source/JavaScriptCore/JavaScriptCore.pro WEBKIT_CONFIG\ -=\ \ use_glib\ use_gstreamer\ use_gstreamer010\ use_native_fullscreen_video\ legacy_web_audio\ web_audio\ video\ gamepad -o Makefile.JavaScriptCore ) && make -f Makefile.JavaScriptCore
make[1]: Entering directory `/home/tokoyax/phantomjs/src/qt/qtwebkit/Source/JavaScriptCore'
( test -e Makefile.LLIntOffsetsExtractor || /home/tokoyax/phantomjs/src/qt/qtbase/bin/qmake /home/tokoyax/phantomjs/src/qt/qtwebkit/Source/JavaScriptCore/LLIntOffsetsExtractor.pro WEBKIT_CONFIG\ -=\ \ use_glib\ use_gstreamer\ use_gstreamer010\ use_native_fullscreen_video\ legacy_web_audio\ web_audio\ video\ gamepad -o Makefile.LLIntOffsetsExtractor ) && make -f Makefile.LLIntOffsetsExtractor
make[2]: Entering directory `/home/tokoyax/phantomjs/src/qt/qtwebkit/Source/JavaScriptCore'
ruby /home/tokoyax/phantomjs/src/qt/qtwebkit/Source/JavaScriptCore/offlineasm/generate_offset_extractor.rb llint/LowLevelInterpreter.asm LLIntDesiredOffsets.h
offlineasm: Parsing llint/LowLevelInterpreter.asm and creating offset extractor LLIntDesiredOffsets.h.
/home/tokoyax/phantomjs/src/qt/qtwebkit/Source/JavaScriptCore/offlineasm/self_hash.rb:38:in `open': Insecure operation - open (SecurityError)
    from /home/tokoyax/phantomjs/src/qt/qtwebkit/Source/JavaScriptCore/offlineasm/self_hash.rb:38:in `foreach'
    from /home/tokoyax/phantomjs/src/qt/qtwebkit/Source/JavaScriptCore/offlineasm/self_hash.rb:38:in `dirHash'
    from /home/tokoyax/phantomjs/src/qt/qtwebkit/Source/JavaScriptCore/offlineasm/parser.rb:711:in `parseHash'
    from /home/tokoyax/phantomjs/src/qt/qtwebkit/Source/JavaScriptCore/offlineasm/generate_offset_extractor.rb:49:in `<main>'
make[2]: *** [LLIntDesiredOffsets.h] Error 1
make[2]: Leaving directory `/home/tokoyax/phantomjs/src/qt/qtwebkit/Source/JavaScriptCore'
make[1]: *** [sub-LLIntOffsetsExtractor-pro-make_first-ordered] Error 2
make[1]: Leaving directory `/home/tokoyax/phantomjs/src/qt/qtwebkit/Source/JavaScriptCore'
make: *** [sub-Source-JavaScriptCore-JavaScriptCore-pro-make_first-ordered] Error 2

こんなエラーが出てビルドできない。 調べてみましたが、これと言った解決方法が見つからず、ソースからビルドするのは諦める。

古いバージョンの linux 用バイナリが配布されているらしいので、それを取ってくるようにした。

% wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2
% cd /usr/local/src
% sudo tar jxf ~/phantomjs-1.9.8-linux-x86_64.tar.bz2
% sudo ln -s phantomjs-1.9.8-linux-x86_64 phantomjs
% sudo ln -s /usr/local/src/phantomjs/bin/phantomjs /usr/local/bin/phantomjs
% phantomjs -v
1.9.8

バージョンが表示されればインストール完了。

JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック

JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック

WEB+DB PRESS Vol.77

WEB+DB PRESS Vol.77

  • 作者: 中川勝樹,山内沙瑛,舟崎健治,吉荒祐一,今井雄太,八木橋徹平,安川健太,近藤宇智朗,奥野幹也,天野祐介,賈成カイ,伊藤直也,住川裕岳,北川貴久,菅原一志,後藤秀宣,久森達郎,登尾徳誠,渡邊恵太,中島聡,A-Listers,小俣裕一,はまちや2,川添貴生,石本光司,舘野祐一,沖田邦夫,澤村正樹,卜部昌平,吉藤博記,片山暁雄,平山毅,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2013/10/24
  • メディア: 大型本
  • この商品を含むブログ (3件) を見る

<参考>
http://shinsuke789.hatenablog.jp/entry/2015/04/06/123000
http://phantomjs.org/build.html