[Image processing software] ImageMagick and Imagick installation memo

table of contents
Hello.
This is Kawa from the OOM Killer System Solutions Department, reporting once a day.
I recently had to install ImageMagick on a Linux machine, and
since it was my first time, it was quite a struggle. First of all, there wasn't much information available.
Even when there was, it was for a different OS, an older version, or a completely different method.
Every time I encountered an error due to package dependencies, I had to deal with it.
This is a memo of what went well in the AlmaLinux 8 environment. I hope it will be useful to someone in the future
Difference between ImageMagick and Imagick
First, it's important to understand that they are two different things. (Skip this if you already know.)
ImageMagick is free, open-source software for editing and converting image files.
Imagick is a PHP extension module that allows you to create and edit image files using the ImageMagick API from PHP.
Therefore,that simply installing ImageMagickwon't allow you to run it from the PHP side!(It's complicated.)
About the environment
AlmaLinux 8.8
Apache 2.4.37
PHP 8.1.23
PHP-FPM 8.1.23
As a preliminary step, install the remi repository
dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Installing ImageMagick
If you try to install it without thinking, the necessary package will not exist and you will get an error like this,
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)
Add and enable the repository "PowerTools",
dnf config-manager --set-enabled powertools
When I tried again, the installation was successful, including all dependencies!
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.5M 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 61k ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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 482k Enabling module streams: nginx 1.14 php 7.2 Transaction Summary ============================================================================================================== Install 142 Packages Total download size: 51 M Installed size: 155 M
If the version is displayed, the installation is complete
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)
Installing Imagick

If you leave this as it is, a dependency error will occur, so you will need to install the necessary packages in advance
dnf install --enablerepo=remi php-pear php-devel
Verify that the pecl command is recognized
which pecl /usr/bin/pecl
Install using pecl.
"Please provide the prefix of ImageMagick installationPress Enter when prompted
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] :
The message displayed upon completion of the installation instructs you to "You should add "extension=imagick.so" to php.ini," so add the following to the bottom of your php.ini file.
# Add the following to php.ini [PECL] extension=imagick.so
Restart Apache and PHP-FPM
systemctl restart httpd systemctl restart php-fpm.service
After restarting, install the additional PHP package and if it appears in the PHP module, it's OK
dnf install php81-php-pecl-imagick-im7 php -m | grep imagick imagick
You can also check the current policy with the following command:
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
complete
16
