The other day, I had to install ImageMagick on Linux, it was quite difficult because it was my first time to install it.
First of all, there was not much information available. Even if I find information, either the OS was different or the version was old, or the method was completely different.
Every time I get an error about package dependencies, I get garbled texts.
This is a reminder of when it worked in the AlmaLinux 8 environment. May it be useful to someone in future.
Difference between ImageMagick and Imagick
The first thing to understand is that ImageMagick and Imagick are different. (If you know what I'm talking about, skip this section.)
ImageMagick is a free and open-source software for editing and converting image files.
Imagick is a PHP extension that allows you to create and edit image files from PHP using the ImageMagick API.
So please note that if you just install ImageMagick, you cannot run it from the PHP side!
The environment
AlmaLinux 8.8
Apache 2.4.37
PHP 8.1.23
PHP-FPM 8.1.23
Install remi repository to begin.
Install ImageMagick
If you try to install it without thinking, you will get an error like this because the required package does not exist just like the following,
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 activate the repository that is called "PowerTools",
dnf config-manager --set-enabled powertools
and then when I tried again, I was able to install it successfully, including 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.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
If the version is displayed, 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)
Install Imagick
Install Imagick
Same as ImageMagick, you will get an error if you try to install it because the required package does not exist. So, let’s install the required packages first.
dnf install --enablerepo=remi php-pear php-devel
Check if you can run the pecl command.
which pecl
/usr/bin/pecl
Install it with pecl.
Press Enter after you see "Please provide the prefix of ImageMagick installation" on the screen to proceed with the installation.
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 upon when the installation completed instructs "You should add "extension=imagick.so" to php.ini", so add the following to the bottom of php.ini.
# ↓add this following in the php.ini
[PECL]
extension=imagick.so
and then restart Apache and PHP-FPM.
systemctl restart httpd
systemctl restart php-fpm.service
Install additional PHP packages after the restart and if they appear in the PHP module, ok.
dnf install php81-php-pecl-imagick-im7
php -m | grep imagick
imagick
Now you can 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
This blog post is translated from a blog post written by Kawa Ken on our Japanese website Beyond Co..
Comments