【画像処理ソフト】ImageMagick と Imagick インストールに関する備忘録的な何か
こんにちは。
一日一回 OOM killer システムソリューション部のかわです。
先日 Linuxマシンに、ImageMagick をインストールすることがあったんですが、
初見というのもあってこれがなかなか苦労しました。まず情報があんまり落ちてない。
落ちててもOSが違ったりバージョンが古かったり方法が全く違ったり。
パッケージ依存関係でエラーが出るたびに繧、繝。繝シ繧ク繝槭ず繝�け
これは、AlmaLinux 8 環境でうまくいった際の備忘録である。後世の誰かの役に立ちますように。
ImageMagickとImagickの違い
まず理解しておかないといけないのが、それぞれ別物だということ。(知ってる人は読み飛ばしてね)
ImageMagick は画像ファイルを編集・変換したりするためのフリーのオープンソースソフトウェア。
Imagick はPHP拡張モジュールで、PHPからImageMagick APIを使って画像ファイルを作成・編集できるもの。
なので、ImageMagick をインストールするだけだと、PHP側から動かせないので注意!(ややこしい)
環境について
AlmaLinux 8.8
Apache 2.4.37
PHP 8.1.23
PHP-FPM 8.1.23
事前準備としてremiリポジトリを入れます
1 | dnf install https: //rpms .remirepo.net /enterprise/remi-release-8 .rpm |
ImageMagick のインストール
何も考えずに入れようとすると、必要なパッケージが存在せずこんな感じでエラーになっちゃうので、
1 2 3 4 5 6 7 8 9 10 11 | dnf install --enablerepo=remi ImageMagick7 ImageMagick7-devel Last metadata expiration check: 0:54:50 ago on Fri Sep 15 15:54:10 2023. Error: Problem: cannot install the best candidate for the job - nothing provides jasper-devel(x86-64) needed by ImageMagick7-devel-1:7.1.1.15-1.el8.remi.x86_64 - nothing provides OpenEXR-devel(x86-64) needed by ImageMagick7-devel-1:7.1.1.15-1.el8.remi.x86_64 - nothing provides ghostscript-devel(x86-64) needed by ImageMagick7-devel-1:7.1.1.15-1.el8.remi.x86_64 - nothing provides jbigkit-devel(x86-64) needed by ImageMagick7-devel-1:7.1.1.15-1.el8.remi.x86_64 - nothing provides lcms2-devel(x86-64) needed by ImageMagick7-devel-1:7.1.1.15-1.el8.remi.x86_64 - nothing provides openjpeg2-devel(x86-64) needed by ImageMagick7-devel-1:7.1.1.15-1.el8.remi.x86_64 (try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages) |
「PowerTools」というリポジトリを追加・有効し、
1 | dnf config-manager -- set -enabled powertools |
再度試すと、依存関係含め無事インストールできました!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | dnf install --enablerepo=remi ImageMagick7 ImageMagick7-devel AlmaLinux 8 - PowerTools 938 kB /s | 3.2 MB 00:03 Last metadata expiration check: 0:00:02 ago on Sat Sep 16 16:35:59 2023. Dependencies resolved. =================================================================================================================== Package Arch Version Repository Size =================================================================================================================== Installing: ImageMagick7 x86_64 1:7.1.1.15-1.el8.remi remi 110 k ImageMagick7-devel x86_64 1:7.1.1.15-1.el8.remi remi 143 k Installing dependencies: ImageMagick7-libs x86_64 1:7.1.1.15-1.el8.remi remi 2.5 M LibRaw x86_64 0.19.5-3.el8 appstream 315 k OpenEXR-devel x86_64 2.2.0-12.el8 powertools 85 k OpenEXR-libs x86_64 2.2.0-12.el8 appstream 671 k adobe-mappings-cmap noarch 20171205-3.el8 appstream 2.1 M adobe-mappings-cmap-deprecated noarch 20171205-3.el8 appstream 118 k adobe-mappings-pdf noarch 20180407-1.el8 appstream 706 k atk x86_64 2.28.1-1.el8 appstream 271 k avahi-libs x86_64 0.7-20.el8 baseos 61 k ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Installing weak dependencies: ImageMagick7-djvu x86_64 1:7.1.1.15-1.el8.remi remi 66 k open -sans-fonts noarch 1.10-6.el8 appstream 482 k Enabling module streams: nginx 1.14 php 7.2 Transaction Summary =================================================================================================================== Install 142 Packages Total download size: 51 M Installed size: 155 M |
バージョンが表示されればインストール完了です。
1 2 3 4 5 6 7 8 | magick --version Version: ImageMagick 7.1.1-15 Q16-HDRI x86_64 21298 https: //imagemagick .org Copyright: (C) 1999 ImageMagick Studio LLC License: https: //imagemagick .org /script/license .php Features: Cipher DPC HDRI Modules OpenMP(4.5) Delegates (built- in ): bzlib cairo djvu fftw fontconfig freetype gslib gvc heic jbig jng jp2 jpeg lcms lqr ltdl lzma openexr pangocairo png ps raqm raw rsvg tiff webp wmf x xml zip zlib Compiler: gcc (8.5) |
Imagick のインストール
こちらもそのままだと依存関係エラーが出てしまうので、事前に必要なパッケージをインストールします。
1 | dnf install --enablerepo=remi php-pear php-devel |
peclコマンドが認識できることを確認します
1 2 | which pecl /usr/bin/pecl |
peclでインストールします。
「Please provide the prefix of ImageMagick installation」のタイミングでEnterを押下するとインストールが進みます。
1 2 3 4 5 6 7 8 9 10 11 12 | pecl install imagick downloading imagick-3.7.0.tgz ... Starting to download imagick-3.7.0.tgz (360,138 bytes) ......................................................................... done : 360,138 bytes 33 source files, building running: phpize Configuring for : PHP Api Version: 20170718 Zend Module Api No: 20170718 Zend Extension Api No: 320170718 Please provide the prefix of ImageMagick installation [autodetect] : |
インストール完了時のメッセージで「You should add "extension=imagick.so" to php.ini」と指示があるので、php.ini最下部に以下を追記します。
1 2 3 4 | # ↓をphp.iniに追記 [PECL] extension=imagick.so |
ApacheとPHP-FPMをリスタートします
1 2 | systemctl restart httpd systemctl restart php-fpm.service |
リスタート後PHPの追加パッケージをインストールし、PHPモジュール内に表示されればok
1 2 3 4 | dnf install php81-php-pecl-imagick-im7 php -m | grep imagick imagick |
おまけで以下コマンドで現状のポリシーが確認できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | magick -list policy Path: /etc/ImageMagick-7/policy .xml Policy: Undefined rights: None Policy: Delegate rights: None pattern: * Policy: Filter rights: None pattern: * Policy: Coder rights: None pattern: * Policy: Coder rights: Read Write pattern: {PNG,JPEG,JPG,GIF,WEBP} Path: [built- in ] Policy: Undefined rights: None |
完