[toc]
Amazon LinuxでImageMagickを使うことがあり、Yumでインストールしたのですが、使いたいバージョンよりも古かったということがありました。こちらの記事を参考にImageMagick-lastを入れようとしたのですが、やはり上手くいかず。。。また、Chefでレシピ化するのにはもう少し手順を簡単にしたいものです。Amazon Linux用のImageMagickのRPMができれば他のEC2インスタンスにもすんなりインストールもできますし、Chefレシピも簡単に書けます。 そこで、今回は rpmbuildでImageMagickをビルドしてRPMを作成する方法を紹介します。
実行環境
Amazon Linux 2017.03で検証しました。 ImageMagickはバージョン 6.9.6-8 をインストールします。
削除
今インストールされているImageMagickを一旦削除します。
$ sudo su -
% yum remove ImageMagick*
準備
remi先生とepel先生の力を借りましょう。
% rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
% sed -i -e "s/enabled *= *1/enabled=0/g" /etc/yum.repos.d/remi*.repo
% cat << '_EOT_' > /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1
[epel-source]
name=Extra Packages for Enterprise Linux 6 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1
_EOT_
% cat << '_EOT_' > /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-6 - Base
mirrorlist=http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
_EOT_
rpm-buildをインストールします。
% yum install rpm-build rpmdevtools
SRPMを持ってきます。
% wget https://www.imagemagick.org/download/linux/SRPMS/releases/ImageMagick-6.9.6-8.src.rpm
% rpm -ivh ImageMagick-6.9.6-8.src.rpm
更新中 / インストール中...
1:ImageMagick-6.9.6-8 ################################# [100%]
警告: ユーザー cristy は存在しません - root を使用します
警告: グループ cristy は存在しません - root を使用します
警告: ユーザー cristy は存在しません - root を使用します
警告: グループ cristy は存在しません - root を使用します
後に実行するビルドで要求されるパッケージをすべてインストールします。
% yum install bzip2-devel freetype-devel libjpeg-devel libpng-devel libtiff-devel giflib-devel perl-devel ghostscript-devel libwmf-devel jasper-devel libtool-ltdl-devel libX11-devel libXext-devel libXt-devel lcms2-devel fftw-devel jbigkit-devel
% yum install libwebp-devel --enablerepo=epel --disablerepo=amzn-main
% yum install djvulibre-devel openjpeg2-devel --enablerepo=epel
% yum install OpenEXR-devel librsvg2-devel --enablerepo=base
specを編集します。Amazon Linux用だと分かるようにリリース名を変えています。
--- /root/rpmbuild/SPECS/ImageMagick.spec.orig 2016-12-11 10:22:24.000000000 +0900
+++ /root/rpmbuild/SPECS/ImageMagick.spec 2017-03-30 16:13:38.865228964 +0900
@@ -3,7 +3,7 @@
Name: ImageMagick
Version: %{VERSION}
-Release: %{Patchlevel}
+Release: %{Patchlevel}.amzn
Summary: Use ImageMagick to convert, edit, or compose bitmap images in a variety of formats. In addition resize, rotate, shear, distort and transform images.
Group: Applications/Multimedia
License: https://www.imagemagick.org/script/license.php
ビルド
ビルドしていきます。先ほどYumで色々パッケージをインストールしたのですが、それでも足りなければ随時インストールしていきましょう。
% rpmbuild -ba ~/rpmbuild/SPECS/ImageMagick.spec
ビルドに成功すると、いくつかRPMができています。
% cd ~/rpmbuild/RPMS/x86_64/
% ls -la
合計 15192
drwxr-xr-x 2 root root 4096 3月 30 16:25 .
drwxr-xr-x 3 root root 4096 3月 30 15:56 ..
-rw-r--r-- 1 root root 206617 3月 30 16:25 ImageMagick-6.9.6-8.amzn.x86_64.rpm
-rw-r--r-- 1 root root 1011237 3月 30 16:25 ImageMagick-c++-6.9.6-8.amzn.x86_64.rpm
-rw-r--r-- 1 root root 97038 3月 30 16:25 ImageMagick-c++-devel-6.9.6-8.amzn.x86_64.rpm
-rw-r--r-- 1 root root 92743 3月 30 16:25 ImageMagick-devel-6.9.6-8.amzn.x86_64.rpm
-rw-r--r-- 1 root root 27800 3月 30 16:25 ImageMagick-djvu-6.9.6-8.amzn.x86_64.rpm
-rw-r--r-- 1 root root 5214552 3月 30 16:25 ImageMagick-doc-6.9.6-8.amzn.x86_64.rpm
-rw-r--r-- 1 root root 8246491 3月 30 16:25 ImageMagick-libs-6.9.6-8.amzn.x86_64.rpm
-rw-r--r-- 1 root root 635932 3月 30 16:25 ImageMagick-perl-6.9.6-8.amzn.x86_64.rpm
インストール
生成されたRPMをすべてインストールします。
% rpm -Uvh ImageMagick-*
準備しています... ################################# [100%]
更新中 / インストール中...
1:ImageMagick-libs-6.9.6-8.amzn ################################# [ 13%]
2:ImageMagick-6.9.6-8.amzn ################################# [ 25%]
3:ImageMagick-c++-6.9.6-8.amzn ################################# [ 38%]
4:ImageMagick-devel-6.9.6-8.amzn ################################# [ 50%]
5:ImageMagick-c++-devel-6.9.6-8.amz################################# [ 63%]
6:ImageMagick-djvu-6.9.6-8.amzn ################################# [ 75%]
7:ImageMagick-perl-6.9.6-8.amzn ################################# [ 88%]
8:ImageMagick-doc-6.9.6-8.amzn ################################# [100%]
% convert -version
Version: ImageMagick 6.9.6-8 Q16 x86_64 2017-03-30 http://www.imagemagick.org
Copyright: Copyright 1999-2017 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP
Delegates (built-in): bzlib cairo djvu fftw fontconfig freetype gslib jbig jng jp2 jpeg lcms ltdl lzma openexr pangocairo png ps rsvg tiff webp wmf x xml zlib
インストールされていますね。生成されたRPMをS3や自前リポジトリにアップロードすれば他のサーバにも使えます。
後片付け
% rm -rf ~/rpmbuild
参考記事
CentOSに最新のImageMagickをインストールする(RPMで) Amazon LinuxでImageMagick-lastを使いたい!!