yumだと古いバージョンしかインストールできないので、ソースコードをコンパイルして最新版をインストールしますよ。
今回はImageMagicについて、ソースコードから最新版をコンパイルしてインストールしてみようと思います。
ImageMagic
ソースをDL
http://www.imagemagick.org/download/
ここからダウンロードできます。しかしここでちょっとした問題があります。
この中で常に最新版のアーカイブは例えば「ImageMagick.tar.gz」です。例えばこれを解凍すると、以下のようになります。
[vagrant@node1 ~]$ ll total 12956 -rw-rw-r-- 1 vagrant vagrant 13266141 Feb 1222:23 ImageMagick.tar.gz [vagrant@node1 ~]$ tar zxf ./ImageMagick.tar.gz [vagrant@node1 ~]$ ll total 12960 drwxrwxr-x 15 vagrant vagrant 4096 Feb 1222:23 ImageMagick-6.9.3-4 -rw-rw-r-- 1 vagrant vagrant 13266141 Feb 1222:23 ImageMagick.tar.gz
アーカイブ名が「ImageMagick.tar.gz」なのに解凍すると「ImageMagick-6.9.3-4」等とフォルダ名にバージョンが入ってしまうのです。これだと自動化しようとすると、バージョン番号が事前に解っていないといけないので、メンテが面倒になってしまいます。それに加えて、ImageMagickのソースコードは古いものはどんどん削除されて404になっていくのです。つまり、プロビジョニングする際にバージョン番号を指定してダウンロードしようとしても、時間が経つとそのバージョンはサイトから消えている、なんて事が起きます。
それを解決するため、tarで頑張って解凍後のフォルダ名を変更します。以下のようにすると「ImageMagick.tar.gz」というアーカイブを「ImageMagick-latest」というフォルダに解凍する事ができます。これでImageMagickのバージョンを知らなくても、常に最新のソースコードを扱うことができるようになります。
mkdir-p ImageMagick-latest && tar zxf ImageMagick.tar.gz -C ImageMagick-latest --strip-components1
後はconfigure、make、make installです。
まとめ
cd /usr/local/src # DL sudo wget http://www.imagemagick.org/download/ImageMagick.tar.gz # フォルダ名を固定化して解凍 sudo mkdir-p ImageMagick-latest && tar xzvf ImageMagick.tar.gz -C ImageMagick-latest --strip-components1# コンパイル・インストールcd ImageMagick sudo ./configure sudo make sudo make install
コンパイル時にエラー
makeした際に「autoconfのバージョンxxx以上をインストールしてからコンパイルし直せ」と言われる場合があります。その場合はImageMagickの時と同様に、以下のようにソースをコンパイルしてインストールします。
cd /usr/local/src sudo wget http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz sudo mkdir-p autoconf-latest && tar xzvf autoconf-latest.tar.gz -C autoconf-latest --strip-components1cd autoconf-latest sudo ./configure sudo make sudo make install
例によってautoconfもアーカイブ名が「autoconf-latest.tar.gz」なのに、解凍するとフォルダ名にバージョンが混入するので、フォルダ名を固定化しています。
バージョンの確認
2016/02/18時点の最新バージョンをインストールすると、以下のバージョンになりました。
[vagrant@node1 src]$ autoconf --version autoconf (GNU Autoconf) 2.69 Copyright (C)2012 Free Software Foundation, Inc. License GPLv3+/Autoconf: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>, <http://gnu.org/licenses/exceptions.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by David J. MacKenzie and Akim Demaille. [vagrant@node1 src]$ convert --version Version: ImageMagick 6.9.3-4 Q16 x86_64 2016-02-18 http://www.imagemagick.org Copyright: Copyright (C)1999-2016 ImageMagick Studio LLC License: http://www.imagemagick.org/script/license.php Features: Cipher DPC OpenMP Delegates (built-in):
ImageMagickのPlaybook
ansibleのplaybookです。ansible v2.0.0.2 で実装していて、becomeやblock等の新機能を使っているため、旧バージョンでは動きません。
雑感
今回はvagrantを使っていますが、最近はローカルでdockerを使う機会が増えました。
ImageMagickはyumを使えばもっと簡単にインストールできますが、やはり最新版と比較するとインストールできるバージョンが古いのですよね。アップデートを考えるとyumの方が遥かに楽ですが、dockerの場合はパッケージの更新の考慮が不要になる(イメージ自体を更新)ので、最新バージョンのソースコードからコンパイルしてインストール機会が増えていくんじゃないかと思っています。
本当はrpmがあると楽てきて嬉しいのですが、ImageMagickのサイトで配布されているrpmを「sudo rpm -ivh xxx.rpm」とやっても、依存が付属していないのでエラーになるのですよね・・・あれはちょっと使い物にならないので、ソースからインストールした方が速いです。