テストコード実行環境(Ubuntu)にImageMagick 7をインストールしよう!【GithubActions】

今回はこのような質問をいただきました。

UbuntuでImageMagick 7を動かしたい!
GithubActionsでプルリクが作られたときに自動的にテストが実行されるようになっているのですが、ImageMagickのテストで失敗しているらしい。
そこで今回はこちらの質問について解説していきます!
- GithubActions
- ubuntu-20.04
まずはImageMagickをインストールしてみる!
まずはインストールしてみましょう!
たったこれだけでインストールできちゃうみたい。
$ sudo apt-get -y install imagemagick
定義ファイルに組み込んでプルリクを作ってみると…
Run sudo apt-get -y install imagemagick
sudo apt-get -y install imagemagick
shell: /usr/bin/bash -e {0}
Reading package lists...
Building dependency tree...
Reading state information...
imagemagick is already the newest version (8:6.9.10.23+dfsg-2.1ubuntu11).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
すでにインストールされていたらしい。
原因:バージョンが違う or コーデックが入っていない
ローカルでは7系のImageMagickを使用していたので、もしかするとこれが原因で実行できてなかったのかも。
メジャーバージョンは合わせておくべきなので7系にします。
org.im4java.core.InfoException: org.im4java.core.CommandException: org.im4java.core.CommandException: identify-im6.q16: no decode delegate for this image format `HEIC'
こんなエラーが出てたのでコーデックが入っていないのが原因だったのかもしれない。
入れられるものは入れてみるスタイル。
解決:コーデックを入れつつ7系にする
6系の削除
まずは6系を削除します。
$ sudo apt remove imagemagick
コーデックの準備
その後、コーデックの準備をします。
sources.listを書き換えておかないと、build-depでエラーが出ることがあるらしい。
手動で書き換えることが多いみたいだけど、今回はGithubActionsなのでsedで書き換えてます。(やってることは同じです。)
$ sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
$ sudo apt update
$ sudo apt install build-essential
$ sudo apt build-dep imagemagick
$ sudo apt install libwebp-dev libopenjp2-7-dev librsvg2-dev libde265-dev
libheifの準備
libheifってやつを入れておく。(何かわかってないけど入れておく)
$ git clone https://github.com/strukturag/libheif.git
$ cd libheif
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install
7系のインストール
最後にImageMagick 7系をインストールします。
$ wget https://www.imagemagick.org/download/ImageMagick.tar.gz
$ tar xf ImageMagick.tar.gz
$ cd ImageMagick-7*
$ ./configure
$ make
$ sudo make install
$ sudo ldconfig
確認
$ convert -version
おまけ:GitHubActionsの定義ファイル
GitHubActionsの定義ファイルにするとこんな感じになります。
必要な部分にコピペしてもらったら動くと思います。
私の環境はubuntu-20.04でした。
- name: remove imagemagick 6
run: sudo apt remove imagemagick
- name: setup imagemagick 7
run: |
sudo sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list
sudo apt update
sudo apt install build-essential
sudo apt build-dep imagemagick
sudo apt install libwebp-dev libopenjp2-7-dev librsvg2-dev libde265-dev
- name: install libheif
run: |
git clone https://github.com/strukturag/libheif.git
cd libheif
./autogen.sh
./configure
make
sudo make install
- name: install imagemagick 7
run: |
wget https://www.imagemagick.org/download/ImageMagick.tar.gz
tar xf ImageMagick.tar.gz
cd ImageMagick-7*
./configure
make
sudo make install
sudo ldconfig
- name: check imagemagick
run: convert -version
あとがき
GithubActionsの定義ファイルって初めて触ったのですが、思っていたよりシンプルでした。
結構楽しいかも。
インストールできて動くようになったのは良かったけど、インストール時間めちゃくちゃ長くてテスト実行するまでに10分くらいかかるようになっちゃいました。