wkhtmltopdfのインストール方法（Amazon Linux2/Alpine Linux）

コンテナにwkhtmltopdfをインストールした時にいろいろつまづいたのでメモしました。
基本的な手順は以下で確認。
https://laox.com/ja/9mcv


Amazon Linuxの場合
-

###１.wkhtmltopdfのダウンロード
公式リポジトリから必要なバージョンのパッケージをダウンロードします。

```
cd /tmp
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox-0.12.6-1.centos6.x86_64.rpm
```

###２.必須フォントのインストール
rpmコマンドでインストールする場合、無いとwkhtmltopdfのインストールの時に怒られるので仕方なく。
後述しますがyumで

```
yum install -y xorg-x11-fonts-75dpi xorg-x11-fonts-Type1 
```

###３.wkhtmltopdfのインストール
ここからが参照元のページのようにうまくいかなかったところ。インストール用コマンドは以下。

```
rpm -Uvh wkhtmltox-0.12.6-1.centos6.x86_64.rpm
```

実行してみると・・・

```
rpm -Uvh wkhtmltox-0.12.6-1.centos6.x86_64.rpm
error: Failed dependencies:
        openssl is needed by wkhtmltox-1:0.12.6-1.centos6.x86_64
```

どうやらダウンロード・保存されたファイル名が求められているファイル名と違う様子。

```
pwd
/tmp
ls -ltr
total 13252
-rw-r--r-- 1 root   root   13564280 Jun 11  2020 wkhtmltox-0.12.6-1.centos6.x86_64.rpm
```

ちなみにrpmのオプションは下記のような内容。

-U：rpm -U <rpm_file> は、パッケージの必要に応じて アップグレード または インストール のいずれかの機能を実行できます。
-vh：-v および -h のオプション（-U と組み合わされる）により、rpm は、詳細出力を表示し、ハッシュマークを使って進行メーターを表示します。

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/deployment_guide/sec-installing_and_upgrading


なぜダウンロードしたファイル名そのままで使用できないんだろう。
ちなみにopensslがお望みのファイル名でダウンロードできないか試したところ、404エラー。
ファイル名の変更も考えたけどそれは違う気がする。
パッケージの依存関係を調べてみる。

```
rpm -qRp wkhtmltox-0.12.6-1.centos6.x86_64.rpmca-certificates
fontconfig
freetype
glibc
libX11
libXext
libXrender
libjpeg
libpng
libstdc++
openssl
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
xorg-x11-fonts-75dpi
xorg-x11-fonts-Type1
zlib
```

この依存関係にあるものたちは全てインストールされているのだろうか。
一応yumコマンドでも試してみる事に。


```
yum install -y wkhtmltox-0.12.6-1.centos6.x86_64.rpm
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/3): make-3.82-24.amzn2.x86_64.rpm                       | 420 kB  00:00:00     
(2/3): openssl-1.0.2k-19.amzn2.0.4.x86_64.rpm              | 495 kB  00:00:00     
(3/3): openssl-libs-1.0.2k-19.amzn2.0.4.x86_64.rpm         | 1.2 MB  00:00:00 
```

足りなかったと思われるパッケージのダウンロードからやってくれている様子。
その結果、

```
wkhtmltopdf -V
wkhtmltopdf 0.12.6 (with patched qt)
```

インストールされた！
yumだと依存パッケージも一緒にインストールしてくれるのでうまくいくらしい。


Alpine Linuxの場合
-

同じqtパッチが適用されたパッケージをインストールしようと思ったら、公式では用意が無いらしい。
issueでいろいろやり取りがあるけど最終的にパッチ適用バージョンを作っていないように見える。
https://github.com/wkhtmltopdf/packaging/issues/2

下記のような情報を参考に自分でパッチをあてるしかないらしい。
（Alpine Linuxやwkhtmltopdf自体のバージョンにもよるかも）
https://github.com/alloylab/Docker-Alpine-wkhtmltopdf/blob/master/Dockerfile

■おまけ
-

いざ使おうと思ったら文字化け発生！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469267/a151426c-a33a-89bd-69ed-263bf562915b.png)

作業はroot、実際使うのはapacheだからパーミッションの問題?
と思ったら読み取り可。

```
ls -ltr /usr/share/fonts/IPAexfont00301/          
total 13524
-rw-r--r-- 1 root root 7776964 Dec 21 16:17 ipaexm.ttf
-rw-r--r-- 1 root root 6041284 Dec 21 16:17 ipaexg.ttf
-rw-r--r-- 1 root root    1592 Dec 21 16:17 Readme_IPAexfont00301.txt
-rw-r--r-- 1 root root   20564 Dec 21 16:17 IPA_Font_License_Agreement_v1.0.txt
```

この時急いで修正したので、どう対応したか忘れてしまった、、
呼び出す側のコードの方を修正して改善したような。
次文字化けに出会ったら今度はちゃんと書こう。