2017年3月23日木曜日

CentOS7向けにwkhtmltopdfをソースからビルド

wkhtmltopdfYUM経由でインストールしたwkhtmltopdfがよく分からないエラーを吐くので最新版(0.12.4)をビルドしたときの覚書。

環境: CentOS 7

よく分からないエラー

/usr/bin/xvfb-run: line 181: 21759 Segmentation fault      DISPLAY=:$SERVERNUM XAUTHORITY=$AUTHFILE "$@" 2>&1

 

目次

  1. YUMバージョンをアンインストール
  2. Git cloneしてコンパイル
  3. インストール
  4. YUMバージョン(0.12.1)と比較して変わったところ
  5. 本番環境へインストール

 


1.YUMバージョンをアンインストール

今のバージョンを確認
# wkhtmltopdf --version

wkhtmltopdf 0.12.1

アンインストール
# yum remove wkhtmltopdf

 


2.Git cloneしてコンパイル

公式サイトを参考に

コンパイラ(開発ツール)をインストール
# yum groupinstall 'Development Tools'

GitHubからダウンロードする。ユーザーのホームディレクトリじゃないとコンパイル時にエラーになるらしい。
# cd
# git clone --recursive https://github.com/wkhtmltopdf/wkhtmltopdf.git

5分ぐらい掛かった。

今の最新バージョン0.12.4をチェックアウト
# cd wkhtmltopdf/
# git tag
# git checkout 0.12.4

セットアップ(?)
# sudo scripts/build.py setup-schroot-centos7

エラー。CentOSのオプションはなくなったらしい。

再度ビルド実行
# scripts/build.py posix-local -clean

エラー

Basic XLib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /root/wkhtmltopdf/qt/mkspecs/linux-g++.

Qtに関連するライブラリが必要らしい。

YUMレポジトリからそれらしいのをインストール
# yum search qt
# yum install qt-devel qt-x11

再度ビルド実行
# scripts/build.py posix-local -clean

エラー

OpenSSL support cannot be enabled due to functionality tests!

OpenSSL系のビルドツールをインストール
# yum install openssl-devel

再度ビルド実行
# scripts/build.py posix-local -clean

エラー

fatal error: png.h: No such file or directory

fatal error: jpeglib.h: No such file or directory

pngとjpegのライブラリをインストール
# yum install libpng-devel libjpeg-turbo-devel

再度ビルド実行
# scripts/build.py posix-local -clean

大量のWarningが出て心配になる。

結構な時間が掛かる。

バイナリがstatic-build/posix-local/フォルダに出力される。

動作確認
# static-build/posix-local/wkhtmltox-0.12.4/bin/wkhtmltopdf https://dksg.co.jp test.pdf

 


3.インストール

コンパイルしたファイルを/usr/local/にコピー
# cp -r static-build/posix-local/wkhtmltox-0.12.4/* /usr/local/

/usr/local/libはデフォルトで未登録なので、読み込むように設定して再読込。
# echo /usr/local/lib > /etc/ld.so.conf.d/usr-local-lib.conf
# ldconfig

ライブラリが読み込まれているか確認
# ldconfig -v | grep libwk

動作確認
# /usr/local/bin/wkhtmltopdf http://dksg.co.jp test.pdf

 


4.YUMバージョン(0.12.1)と比較して変わったところ

試してみて気付いたところ

  • xvfb-runが必要なくなった
  • 「--viewport-size」が使えるようになった
  • bootstrap3のnav-justifiedが潰れる(多分バグ)

 


5.本番環境へインストール

ビルドしたときにtar.xzが作られているので、これを本番サーバーへコピーする。

解凍
# tar -xvf wkhtmltox-0.12.4_local-vm-centos7.dksg.jp.tar.xz

/usr/local/にコピー
# /bin/cp -r wkhtmltox-0.12.4/* /usr/local/

ライブラリの登録と読み込み → 確認
# echo /usr/local/lib > /etc/ld.so.conf.d/usr-local-lib.conf
# ldconfig
# ldconfig -v

動作確認
# /usr/local/bin/wkhtmltopdf http://dksg.co.jp test.pdf

システム上で確認出来たらYUMバージョンをアンインストール
# yum remove wkhtmltopdf

 

これで様子を見る。

 

< Related Posts >

コメントを投稿
Related Posts Plugin for WordPress, Blogger...

Blog Archives