CentOS7向けにwkhtmltopdfをソースからビルド
YUM経由でインストールしたwkhtmltopdfがよく分からないエラーを吐くので最新版(0.12.4)をビルドしたときの覚書。
環境: CentOS 7
よく分からないエラー
/usr/bin/xvfb-run: line 181: 21759 Segmentation fault DISPLAY=:$SERVERNUM XAUTHORITY=$AUTHFILE "$@" 2>&1
目次
- YUMバージョンをアンインストール
- Git cloneしてコンパイル
- インストール
- YUMバージョン(0.12.1)と比較して変わったところ
- 本番環境へインストール
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 >