【图像处理软件】ImageMagick 和 Imagick 安装备忘录

您好,
我是来自“每日一次OOM杀手系统解决方案”部门的Kawa。

前几天,我需要在一台 Linux 机器上安装 ImageMagick,但
因为是第一次,所以非常困难。首先,可用的信息很少。
即使有,也是针对其他操作系统、旧版本或者完全不同的方法。
每次遇到包依赖错误时,我都不得不去……(此处原文疑似有误,无法翻译)

这是一份关于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 存储库

dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm

安装 ImageMagick

如果你不加思考就尝试安装,所需的软件包将不存在,你会收到类似这样的错误信息:

dnf install --enablerepo=remi ImageMagick7 ImageMagick7-devel 上次元数据过期检查时间:2023年9月15日星期五 15:54:10,距今0:54:50。错误:问题:无法安装最佳候选版本 - ImageMagick7-devel-1:7.1.1.15-1.el8.remi.x86_64 需要的 jasper-devel(x86-64) 未提供 - ImageMagick7-devel-1:7.1.1.15-1.el8.remi.x86_64 需要的 OpenEXR-devel(x86-64) 未提供 - ImageMagick7-devel-1:7.1.1.15-1.el8.remi.x86_64 需要的 ghostscript-devel(x86-64) 未提供 - jbigkit-devel(x86-64) 未提供ImageMagick7-devel-1:7.1.1.15-1.el8.remi.x86_64 需要 lcms2-devel(x86-64) - 没有提供该软件包;ImageMagick7-devel-1:7.1.1.15-1.el8.remi.x86_64 需要 openjpeg2-devel(x86-64) - 没有提供该软件包;ImageMagick7-devel-1:7.1.1.15-1.el8.remi.x86_64 需要 openjpeg2-devel(x86-64)(尝试添加“--skip-broken”以跳过无法卸载的软件包,或添加“--nobest”以使用最佳候选软件包以外的其他软件包)。

添加并启用存储库“PowerTools”,

dnf config-manager --set-enabled powertools

当我再次尝试时,安装成功了,包括所有依赖项!

dnf install --enablerepo=remi ImageMagick7 ImageMagick7-devel AlmaLinux 8 - PowerTools 938 kB/s | 3.2 MB 00:03 上次元数据过期检查:2023 年 9 月 16 日星期六 16:35:59,距今 0:00:02。依赖关系已解决。 ======================================================================================================================= 软件包 架构 版本 软件仓库 大小 ====================================================================================================================================== 安装: 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 安装依赖项: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.1M 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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 安装弱依赖项: 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 启用模块流:nginx 1.14 php 7.2 交易摘要 ===================================================================================================================== 安装 142 个软件包 总下载大小:51 MB 安装大小:155 MB

如果显示版本号,则表示安装完成。

magick --version 版本:ImageMagick 7.1.1-15 Q16-HDRI x86_64 21298 https://imagemagick.org 版权所有:(C) 1999 ImageMagick Studio LLC 许可:https://imagemagick.org/script/license.php 功能:Cipher DPC HDRI 模块 OpenMP(4.5) 委托(内置):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 编译器:gcc (8.5)

安装 Imagick


如果保持现状,将会出现依赖关系错误,因此您需要提前安装必要的软件包。

dnf install --enablerepo=remi php-pear php-devel

确认 pecl 命令已被识别

哪个 pecl /usr/bin/pecl

使用 pecl 安装。
看到“请提供 ImageMagick 安装前缀

pecl install imagick 正在下载 imagick-3.7.0.tgz ... 开始下载 imagick-3.7.0.tgz (360,138 字节) ....................................................................................完成:360,138 字节 33 个源文件,正在构建 运行:phpize 配置: PHP API 版本:20170718 Zend 模块 API 编号:20170718 Zend 扩展 API 编号:320170718 请提供 ImageMagick 安装前缀 [自动检测]:

安装完成后,将出现一条消息,提示“您应该将“extension=imagick.so”添加到 php.ini ”,因此请将以下内容添加到 php.ini 的末尾。

# 将以下内容添加到 php.ini 文件中:[PECL] extension=imagick.so

重启 Apache 和 PHP-FPM

systemctl restart httpd systemctl restart php-fpm.service

重启后,安装额外的 PHP 软件包,如果它出现在 PHP 模块中,就说明没问题了。

dnf install php81-php-pecl-imagick-im7 php -m | grep imagick imagick

您还可以使用以下命令查看当前策略:

magick -list policy 路径:/etc/ImageMagick-7/policy.xml 策略:未定义 权限:无 策略:委托 权限:无 模式:* 策略:过滤器 权限:无 模式:* 策略:编码器 权限:无 模式:* 策略:编码器 权限:读写 模式:{PNG,JPEG,JPG,GIF,WEBP} 路径:[内置] 策略:未定义 权限:无

完全的

如果您觉得这篇文章有用,请点击【点赞】!
15
加载中...
15票,平均分:1.00/115
8,892
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

川健

来自系统解决方案部门的
一只奇特的宝可梦