本日も乙

ただの自己満足な備忘録。

Amazon LinuxでImageMagickのRPMを作成してインストールする

[toc]

Amazon LinuxImageMagickを使うことがあり、Yumでインストールしたのですが、使いたいバージョンよりも古かったということがありました。こちらの記事を参考にImageMagick-lastを入れようとしたのですが、やはり上手くいかず。。。また、Chefでレシピ化するのにはもう少し手順を簡単にしたいものです。Amazon Linux用のImageMagickRPMができれば他の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_

さらにCentOS-Baseリポジトリを追加します。

% 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を使いたい!!